×
嵌入式 > 嵌入式开发 > 详情

NEC V850 之 串口通信(UART4)

发布时间:2020-08-24 发布时间:
|
搞一个芯片如果不搞串口总是感觉缺点什么,这段时间搞v850系列的32位MCU,基本程序差不多就到串口就截至了,下面就是要弄CAN和系统了。

这次的串口的程序还是把接收的字符再发送出去。之前先说明几点

 
  1. 系统时钟,设置系统时钟输出脚输出,方便测量目前的系统时钟,有了准确的时钟才能计算波特率等信息。
  2. 波特率计算方式,根据寄存器UDnCTL1和UDnCTL2来计算,见下图

举个例子:如果串口的总线时钟和系统时钟一致为32MHz,我们需要115200bps的波特率,下面算出UDnCTL2寄存器的值(即K值),可以得到一个方程为115200bps = 32MHz / 2*k ,可以求的 k = 138.888 ,取值138或者139。可见通信是有误差的。只要是误差量足够小就不足为虑,不要进行连续的大数据传输问题就不会很大。下面来计算下误差率,如果取值为138的话,则通信波特率可以由 32MHz / (2*138) = 115942.0289855072 bps ,误差率为((115942.02899/ 115200) - 1)* 100 = 0.644%。


下面是代码部分了

  • 串口接收中断屏蔽寄存器 UD4RIC
  • 串口控制寄存器0 UD4CTL0
  • 串口控制寄存器1UD4CTL1
  • 串口控制寄存器2 UD4CTL2
  • 时钟选择控制寄存器3 SELCNT3 -- ISEL34
  • 串口状态寄存器 UD4STR -- UD4TSF
  • 串口发送数据寄存器 UD4TX
  • 串口接收数据寄存器UD4RX

程序上操作:串口初始化,串口使能,串口禁止,串口查询发送一个字符,串口中断接收一个字符。

  • 串口初始化
    1. 禁止串口发送,接受及运行;
    2. 关闭接收中断,清接收中断标志;
    3. 设置中断优先级;
    4. 设置串口波特率
    5. 设置串口时钟;
    6. 设置串口数据帧属性;
    7. 设置串口RXD,TXD端口属性。
  • 串口使能
    1. 使能串口接收中断,清接收中断标志位;
    2. 使能串口发送,接收及运行标志位。
  • 串口禁止
    1. 禁止串口发送,接收及运行;
    2. 禁止串口的三种中断源。
  • 串口查询发送一个字符
  • 串口中断接收一个字符

下面是具体的代码了。

代码出处:main.c

#include

如果有知晓答案的朋友,请不吝赐教!



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
五大标准轻松搞定4K超高清电视选购