本次实验在开发板上建立串口通信,方便其它实验。实验中选择了开发板上已经具备的“USB-UART”端口(J1),直接使用一根Micro数据线与电脑连接,通过串口助手软件就能与PC建立通信。
一、实验资源
1、HC32F460-EVB;
2、Keil V5.28;
3、ST-LINK调试器;
4、Type-A to Micro数据线
二、资源简介
HC32F460PETB具备4个通道的UART端口,支持全双工同、异步通信,支持智能卡接口 (ISO/IEC7816-3),支持调制解调器操作以及多处理器通信。UART与USART在做异步通信时两者没有什么区别,但USART在做同步通信时能够提供主动时钟,例如在智能卡 (ISO/IEC7816-3)通信中的应用,本次实验只是做异步通信。
在串口通信中有几个比较重要的参数需要事前约定,如通信速率、数据位宽、停止位位数、有无校验等。通信速率与串口工作的时钟频率有着密切的关系。HC32F460支持多种时钟工作
“波特率生成器提供小数波特率模式和整数波特率模式。整数波特率模式误差较大时,可采用小数波特率模式来降低波特率计算误差 ”这种灵活的波特率设置可以保证将通信误差降至最低水平。
上述文档对于波特率设置讲解非常详细,对于这一参数的理解有很大的帮助。
三、代码实现
下面是实验中用到的资源:
实验的代码按照DEMO中轮询通讯例程进行修改:
void USART_Config(void)
{
en_result_t enRet = Ok;
uint32_t u32Fcg1Periph = PWC_FCG1_PERIPH_USART3;
const stc_usart_uart_init_t stcInitCfg =
{
UsartIntClkCkNoOutput,
UsartClkDiv_1,
UsartDataBits8,
UsartDataLsbFirst,
UsartOneStopBit,
UsartParityNone,
UsartSamleBit8,
UsartStartBitFallEdge,
UsartRtsEnable,
};
/* Enable peripheral clock */
PWC_Fcg1PeriphClockCmd(u32Fcg1Periph, Enable);
/* Initialize USART IO */
PORT_SetFunc(USART_RX_PORT, USART_RX_PIN, USART_RX_FUNC, Disable);
PORT_SetFunc(USART_TX_PORT, USART_TX_PIN, USART_TX_FUNC, Disable);
/* Initialize UART */
enRet = USART_UART_Init(USART_CH, &stcInitCfg);
if (enRet != Ok)
{
while (1)
{
}
}
/* Set baudrate */
enRet = USART_SetBaudrate(USART_CH, USART_BAUDRATE);
if (enRet != Ok)
{
while (1)
{
}
}
/*Enable RX && TX function*/
USART_FuncCmd(USART_CH, UsartRx, Enable);
USART_FuncCmd(USART_CH, UsartTx, Enable);
}
void Usart_Rx_Tx(void)
{
uint16_t u16RxData;
if (Set == USART_GetStatus(USART_CH, UsartRxNoEmpty)) /* Warit Rx data register no empty */
{
u16RxData = USART_RecData(USART_CH);
while (Reset == USART_GetStatus(USART_CH, UsartTxEmpty)); /* Warit Tx data register empty */
USART_SendData(USART_CH, u16RxData);
}
UsartRxErrProcess();
}
int32_t main(void)
{
int8_t get_sys_clk;
/* Initialize Clock */
ClkInit();
USART_Config();
get_sys_clk = CLK_GetSysClkSource();
printf("\r\n sys_clk = %d ",get_sys_clk);
printf("\r\n HC32F460PETB USART TEST IS OK!");
while (1)
{
Usart_Rx_Tx();
}
}
四、实验结果
五、实验总结
通过USART3通信实验对HC32F460PETB串口的使用有了初步认识,并为后面的其他一些实验提供了方便。
|