自中科昊芯推出专题讲解SCI串口通信以来,第一期主要讲解SCI串口FIFO通信原理,本期主要讲解SCI串口自动波特率,FIFO中断通信逻辑将在下期内容中讲解。
HX2000系列SCI模块原理框图如下,自动波特率时,模块将工作于标准SCI模式,其功能可通过SCIFFTX[SCIFFENA]置零选择,其发送、接收与读取过程为:DSP端通过CPU,将数据装载到发送缓冲寄存器SCITXBUF中。使其能发送TXENA信号,通过TXSHF移位寄存器,逐步将SCITXBUF中的数据,移位到SCITXD引脚上。通过GPIOMUX配置发送SCITXD引脚,通过CH340等串行数据传输线向PC发送数据,以实现发送功能。通过GPIOMUX配置SCIRXD引脚,使得DSP端接收,PC端通过CH340等串行数据传输线发送的数据。使能接收RXENA信号,通过RXSHF移位寄存器,逐步将接收数据,移位到接收数据缓冲寄存器SCIRXBUF,以实现接收功能。通过SCIRXST[RXRDY]可判断,当前是否接收到数据,以便于CPU读取接收到的数据。

在HX2000系列SCI模块中,通过SPIFFTX[SPIRST]使能,可使SCI自动波特率逻辑工作,其编程过程为:设置初始波特率为1或小于500kbps,以便于自动调整任意波特率。使能SCIFFCT[CDC]选择标准SCI工作于自动波特率模式。使能SCIFFCT[ABDCLR]以清除ABD位,以备自动波特率。PC端发送“A”或“a”,等待主机接收“A”或“a”成功,以完成自动波特率与校准,同时产生SCI传输FIFO中断TXINT;使能SCIFFCT[ABDCLR]以清除ABD位,以响应中断。清除CDC位以锁定当前设置的波特率,以防止重复中断。
由此设计SCI串口AutoBud通信实例:采用SCI与串口CH340,通过串口调试助手,向CPU发送41,PC端接收到41后,任意发送一组数据,CPU接收所发送的数据。
基于以上分析,在CDK上开发SCI AutoBud自动波特率程序,代码包括:SCI GPIO外设引脚配置,标准SCI功能配置程序,SCI自动波特率配置程序,发送与接收程序,主程序调用执行。主要代码如下:

CDK上开发SCI 串口自动波特率,其编译结果为:

编译通过后,就可以开始调试了,其调试结果如下:

调试后,可通过串口调试助手查看自动波特率状态、发送与接收到的数据如下图:

-
寄存器
+关注
关注
31文章
5588浏览量
129035 -
数据
+关注
关注
8文章
7314浏览量
93942 -
代码
+关注
关注
30文章
4940浏览量
73116 -
SCI
+关注
关注
1文章
59浏览量
20795
发布评论请先 登录
UART波特率计算及UART收发回显实验
ATClient配合USART_V2使用时,无法开at_client_init后修改串口波特率是怎么回事?
串口波特率设置1200用不了是怎么回事?
115200的波特率,为啥实际速度只有11KB/s?
波特率是什么
【中科昊芯Core_DSC280025C开发板试用体验】+SCI测试与代码解读
可编程电源的通信波特率应如何设置?
基于瑞萨64位MPU RZ/G2L的uboot串口多波特率支持介绍
MAX13051 ±80V故障保护CAN收发器,具有自动波特率模式技术手册
STM32U575串口接收+GPDMA波特率不匹配怎么解决?
STM32G070 UART串口,低波特率传送数据时,TIMER出现严重延时现象如何解决?
CAN总线十万个为什么 | CAN自定义波特率有什么用?

SCI串口自动波特率介绍
评论