RA-Eco-RA6M4开发板具有串口通讯功能,并载有USB转TTL模块,以便于串口通信和烧录,其电路见图1所示。

图1 USB转TTL电路
此外,在直接与其他串口设备通讯时,还可以通过接口J4来进行连接,该接口情况如图2所示。

图2 接口J4
在硬件提供支持得前提下,就可以用RASC对所用引脚加以配置了。在开发板上,调试用的串口是SCI UART 9对应的引脚为 P109和P110。
此时,若观察这2个引脚它是已被配置的,见图3所示。

图3 引脚配置
为此,需要在引脚功能界面,选取“Disabled”来取消原有的引脚设置,见图4所示。

图4 取消原配置
按图5所示启用串口功能,然后按图6所示来加入串口。

图5启用串口功能

图6 加入串口
此时,会弹出图7所示的窗口,点击弹出窗口并按图8来设置参数。

图7 弹出窗口

图8 设置参数
随后,按图9所示来修改“Heap size”以设置堆区大小。

图9 设置堆区
最后,点击右上角的“Generate Project Content”按钮,以生成配置代码。
在生成代码后,若直接进行编译会出现图10所示的报错信息。

图10 编译报错
当在主程序所在的文件内,若添加相应的内容,则会通过编译。
需添加的内容为:
fsp_err_t err = FSP_SUCCESS;
unsigned char send_buff[100];
volatile bool uart_send_complete_flag = false;
void user_uart9_callback (uart_callback_args_t * p_args)
{
if(p_args->event == UART_EVENT_TX_COMPLETE)
{
uart_send_complete_flag = true;
}
}
int fputc(int ch)
{
err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);
if(FSP_SUCCESS != err) __BKPT();
while(uart_send_complete_flag == false)
{
}
uart_send_complete_flag = false;
return ch;
}
此时,将主程序修改为:
void hal_entry(void)
{
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
while(1)
{
printf("Hellow world ! \r\n");
R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
}
}
经程序的编译和下载,其测试结果如图11所示,

图11 输出测试
除了发送信息外,在串口设备的使用中,发送字节指令也是十分广泛的,测试字节指令发送的主程序为:
void hal_entry(void)
{
char ML[3]={0X31,0X32,0X33};
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
while(1)
{
for(i=0;i<3;i++)
{
fputc(ML[i]);
}
R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
}
}
经程序的编译和下载,其测试结果如图12所示,说明测试成功。

图12 发送字节指令
有了前面的技术准备,下面就以一个MP3语音模块的播放控制来展示其作用。
该程序的功能是每10秒钟就自动更换一首播放歌曲,其主程序为:
void hal_entry(void)
{
int i, n;
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
n=1;
while(1)
{
playn(n);
for(i=0;i<10;i++)
{
fputc(cmd3[i]);
}
n=(n+1)%6;
R_BSP_SoftwareDelay(10000, BSP_DELAY_UNITS_MILLISECONDS);
}
}
经程序的编译和下载,其测试结果如图13所示。

图13 测试结果
在连接MP3语音模块后,其工作状态如图14所示,可以听到其定时切换播放内容的效果。

图14 播放测试
演示视频: