一、测试平台:
MCU:STM32F429IGT6
工具:STM32CubeMX软件
编译软件:MDK
二、配置步骤
(1).打开STM32CubeMX软件,创建新的工程文件,先生成一个不带操作系统的串口1例程,生成串口的例程这里不再详细介绍。
(2).由于测试通信模块时需要给通信模块发送AT命令,所以在这里我们将串口1接上电脑,通过电脑串口软件下发AT命令,串口1接收中断收到数据之后将AT命令通过USB接口转发给4G通信模块。由于AT命令都是以0x0D 0x0A结束,所以当串口收到0x0A时,则所以数据接收完成,之后将数据转发给4G通信模块。
(3).编写串口1接收中断函数,实现串口1收到以0x0A结尾的数据之后,将数据回传到电脑端串口软件中。由于STM32CubeMX生成的工程中没有开启串口1接收中断,在这里添加上。
__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);

添加串口1接收和发送的函数
///重定向c库函数printf到USART1
int fputc(int ch, FILE *f)
{
unsigned char bCh=0;
bCh=ch;
HAL_UART_Transmit(&huart1,&bCh,1,10);
return (ch);
}
unsigned char TxdData[UART_BUF_LEN];
unsigned char bRxdFinishFlag=0;
unsigned char RxdData[UART_BUF_LEN];
unsigned char bRxLen=0;
unsigned char UsbRxdData[USB_BUF_LEN];
void Test_USART_TXRX(void)
{
if(1==bRxdFinishFlag)
{
bRxdFinishFlag=0;
HAL_UART_Transmit(&huart1,RxdData,bRxLen,100);
}
}

void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
uint8_t bData=0;
static uint8_t bCnt=0;
if(__HAL_UART_GET_FLAG( &huart1, UART_FLAG_RXNE ) != RESET)
{
bData=( uint8_t)READ_REG(huart1.Instance->DR);
RxdData[bCnt++]=bData;
if(RxdData[bCnt-1]==0x0A)
{
bRxLen=bCnt;
bCnt=0;
bRxdFinishFlag=1;
}
}
/* USER CODE END USART1_IRQn 0 */
// HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}

(4).测试串口1的接收和发送,电脑串口1软件下发0x0A结尾的AT命令,串口1可以接收到下发的命令。

(5).配置USB_OTG,由于电路板上的USB引出来的管脚是PB14,PB15,所以在这里需要配置USB_OTG_HS,由于电路板上没有外接Phy,所以这里配置为内部的FS Phy,Internal FS Phy选项下Host Only,同时配置中断。

(6).配置USB_HOST,由于4G通信模块是CDC设备,所以在这里配置为Class For HS IP项下选择Communication Host Class(Virtual Port Com)。因为ME909s模块连接后,配置描述符下一共有5个 Interface , 并且 Interface 中至多有3个Endpoint(下面简称Ep)。所以 USBH_MAX_NUM_ENDPOINTS 需配置 >3 , USBH_MAX_NUM_INTERFACES 需配置 >5.。

(7).生成代码之后,修改classcode,由于ME909s厂商自定义的classcode是0xFF,所以将USB_CDC_CLASS宏定义修改为0xFF。
#define USB_CDC_CLASS 0x02
#define USB_CDC_CLASS 0xFF //厂商自定义classcode

本文档详细介绍了如何使用STM32CubeMX配置STM32F429IGT6微控制器,通过串口1接收AT命令,并通过USB接口将命令转发给4G通信模块。配置包括串口1接收中断、USB_OTG_HS配置、USB_HOST设置,以及针对特定4G模块(如ME909s)的USB_Host_CDC类请求和接收回调函数的调整。最终实现了从串口软件发送AT命令并接收4G模块响应的功能。
最低0.47元/天 解锁文章
3429





