RA4M2-SENSOR开发板配有串口转USB通讯功能,其电路如图1所示。

图1 转换电路
由图可知,串口引脚为P110和P109,对应着UART9,为此在RASC中需按图2所示来启用它。

图2 启用UART9
随后,在栈中按图3所示进行添加,并按图4所示来设置其参数。

图3 添加UART9

图4 参数设置
实现串口收发测试的主程序为:
void hal_entry(void)
{
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 3);
assert(FSP_SUCCESS == err);
printf("Hellow world ! \\r\\n");
while(1)
{
if(uart_receive_complete_flag)
{
uart_receive_complete_flag = false;
if(uart_rx_buffer[0] == 0x55 && uart_rx_buffer[1] == 0xAA)
{
if(uart_rx_buffer[2] == 0x10)
{
printf("%d\\n", 66);
}
else if(uart_rx_buffer[2] == 0x11)
{
printf("%d\\n",88);
}
}
err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 3);
assert(FSP_SUCCESS == err);
}
R_BSP_SoftwareDelay (100, BSP_DELAY_UNITS_MILLISECONDS);
}
}
经程序的编译和下载,其测试结果如图5所示,说明功能正确。

图5 测试结果
为进行LED灯的控制,需依照图6对所用的引脚加以配置。

图6 LED电路
实现以协议通讯来控制LED灯的主程序为:
void hal_entry(void)
{
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 3);
assert(FSP_SUCCESS == err);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_LOW);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);
printf("RA4M2-SENSOR test : \\r\\n");
while(1)
{
if(uart_receive_complete_flag)
{
uart_receive_complete_flag = false;
if(uart_rx_buffer[0] == 0x55 && uart_rx_buffer[1] == 0xAA)
{
if(uart_rx_buffer[2] == 0x10)
{
printf("%d\\n", 66);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_HIGH);
}
if(uart_rx_buffer[2] == 0x11)
{
printf("%d\\n",77);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_LOW);
}
...
}
err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 3);
assert(FSP_SUCCESS == err);
}
R_BSP_SoftwareDelay (100, BSP_DELAY_UNITS_MILLISECONDS);
}
}
经程序的编译和下载,其测试结果如图7所示,并可控制LED灯的状态,说明设计正确。

图7 测试结果