请选择 进入手机版 | 继续访问电脑版

芯虎论坛

 找回密码
 立即注册
查看: 423|回复: 0

华大HC32L17X_19X系列Uart通信学习笔记

[复制链接]

19

主题

19

帖子

211

积分

虎背熊腰

Rank: 3Rank: 3

积分
211
发表于 2020-10-26 15:30:46 | 显示全部楼层 |阅读模式
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);//使能收发

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|芯虎论坛 ( 辽ICP备18019618号 )

GMT+8, 2020-11-27 07:17 , Processed in 0.098023 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表