打印
[综合信息]

H32L13X系列Uart通信学习笔记

[复制链接]
947|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LED2013|  楼主 | 2020-8-7 11:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
UART通用同步异步收发器能够灵活地与外部设备进行全双工数据交换,支持同步单向通信以及多处理器通信。常用于短距离、低速的串行通信,通过可编程波特率发生器提供了多种波特率。    首先需要对同步异步,单工半双工全双工有一定的了解。
     同步、异步区别
1. 同步通信时钟频率一致(同一条时钟线相连),发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
2. 同步通信效率高;异步通信效率较低。
3. 同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
4. 同步通信可用于点对多点;异步通信只适用于点对点。  
    全双工、半双工区别:
1. 单工:简单的说就是一方只能发信息,另一方则只能收信息,通信是单向的。2. 半双工:比单工先进一点,就是双方都能发信息,但同一时间则只能一方发信息。3. 全双工:比半双工再先进一点,就是双方不仅都能发信息,而且能够同时发送。


    UART支持同步半双工通信和异步全双工模式,通过配置控制寄存器实现工作模式0-3,其中模式0为同步半双工模式,模式1-3为异步全双工模式。
   传输数据的结构四种模式有所不同,就模式3的数据结构进行说明:Start(1Bit)+Data(8Bit)+B8(1Bit)+Stop(1-2Bit),其中Start为起始位、Data为数据位。Stop为停止位,位数由控制寄存器UARTx_SCON.STOPBIT控制。主要说明一下B8在不同模式下代表不同的含义。模式2/3的正常工作模式下B8一般设置为奇偶校验位,用以校验数据是否正确。在多机通信的工作模式下,B8通常用以区别数据帧与地址帧,将B8位置0代表当前为数据帧,将B8位置1代表当前为地址帧。
进行UART配置的部分代码及配置流程举例:
   stcConfig.enRunMode = UartMode3;//模式3
    stcConfig.enStopBit = Uart1bit;  //1bit停止位


    stcMulti.enMulti_mode = UartNormal;//正常工作模式
    Uart_SetMultiMode(UARTCH1,&stcMulti);//多主机单独配置
    enTb8 = UartEven;//偶校验
    Uart_SetMMDOrCk(UARTCH1,enTb8);
   
    Uart_Init(UARTCH1, &stcConfig);//串口初始化
   
    Uart_SetClkDiv(UARTCH1,Uart8Or16Div);//采样分频
    stcBaud.u32Pclk = Sysctrl_GetPClkFreq();
    stcBaud.enRunMode = UartMode3;
    stcBaud.u32Baud = 9600;
    u16Scnt = Uart_CalScnt(UARTCH1,&stcBaud);//波特率计算
    Uart_SetBaud(UARTCH1,u16Scnt);//波特率设置
   
    Uart_ClrStatus(UARTCH1,UartRC);//清接收请求
    Uart_EnableIrq(UARTCH1,UartRxIrq);//使能串口中断  
    Uart_EnableFunc(UARTCH1,UartRx);//使能收发

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2341

主题

29289

帖子

24

粉丝