如何实现RA UART实现串口波特率自适应?含详细代码!
扫描二维码
随时随地手机看文章
在下述的内容中,小编将会对手把手教大家如何去实现RA UART实现串口波特率自适应,如果串口波特率自适应内容是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。
一、什么是串口波特率
串口波特率是指串行通信中每秒传输的码元(符号)的个数,它是对信号传输速率的一种度量。波特率与比特率的关系在于,如果数据不压缩,波特率等于单位时间内传输的数据位数。然而,如果数据进行了压缩,单位时间内传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。波特率一般指的是调制解调器的通信速度,即线路状态更改的次数。在计算机网络通信中,波特率指单片机或计算机在串口通信时的速率,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数模拟线路信号的速率。
以波特率为9600bit/s为例,这意味着每秒传输9600位数据。这包括了起始位、校验位和停止位在内的所有数据位,因此实际有效数据传输量会少于这个数值。当使用该波特率时,每个电平持续时间就是1/9600秒。计算发送一位数据所需系统时钟数的方法是:系统时钟数(BPS_CNT)等于系统时钟频率(FLCK)除以波特率(BPS)。例如,如果系统时钟频率为50MHz,每个时钟周期为20ns,那么每个电平持续时间(1/9600秒)除以每个时钟周期(20ns)就等于发送一位数据所需系统时钟数(BPS_CNT)。
选择串口波特率时,需要考虑通信双方设备的兼容性。如果将调制解调器的波特率设置为高于其他设备的波特率,较快的设备通常需要改变其波特率以匹配速度较慢的设备。因此,通信双方需要设置相同的波特率以确保数据传输的同步和正确性。
二、如何实现RA UART实现串口波特率自适应(含代码)
RA系列的开发环境中的FSP能够以最简单的GUI的方式来配置外设并生成封装好的底层驱动代码。但如果外设需要做动态功能上的切换,例如串口IRQ接收等功能,就需要手动通过寄存器配置来做动态修改。下面的例子是一个简单的通过RXD管脚首先通过IRQ中断触发来侦测接收数据的start Bits时间,计算出实际波特率,然后做动态波特率配置。这样就能够实现波特率自适应(侦测)的功能。
演示的例程采用EK-RA2E1评估板,UART1 (P401, P402) 分别配置为TXD1 & RXD1。
具体配置
1、UART1配置
UART1的配置只需要按照应用要求来做就可以,但必须留意所选的RXD脚必须跟IRQ是复用的,以便做软件切换。由于是做波特率自适应,属性页面中关于Baud的配置可以忽略。
2、GPT配置
由于需要通过定时器来做start bit的时间间隔测量,可以选用GPT/AGT使用one-shot/Periodic模式并留足够Period值余量来确保start bit在低速下不会溢出。
3、P402管脚配置为IRQ4
将SCI1串口默认的(RXD)P402管脚改为IRQ4,并添加中断入口函数。
中断入口函数里面首先判断是否发生了下降沿触发,然后启动定时器,等再次中断进入后,停止定时器,并取得定时器计数值,通过跟默认已知的系统时钟参数相除,就能得到确切的波特率数值。
4、波特率计算和相关寄存器配置
取得波特率实际值后,通过硬件手册上的相关的方程式就能够反推出几个控制波特率的寄存器的配置需要值 (brr, semr , cks等),并将相关计算出的数值修改到FSP SCI1的全局变量结构体内 (g_uart1_baud_setting)。
5、修改P402管脚配置为UART-RXD
然后将P402管脚修改为UART功能,并启动 UART_Open() 函数,设置波特率已配置标志。
6
这样主函数就能够直接通过已侦测到的波特率直接发送数据和开始接收数据。
以上便是小编此次带来的全部内容,十分感谢大家的耐心阅读,想要了解更多相关内容,或者更多精彩内容,请一定关注我们网站哦。