ZigBee(CC2530)(05) 串口收发数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36292543/article/details/83475128

串口收发数据


目录

一、预备知识: 

什么是LSB/MSB?

理解单工半双工全双工

UART发送

UART接收    

二、项目实施


一、预备知识: 

      UART模式提供异步串行接口。在UART模式中,接口使用双线连接方式(含有引脚RXD、 TXD)或者四线连接方式(含有引脚RXD、 TXD、RTS和CTS),其中RTS和CTS引脚用于硬件流量控制。

UART模式的操作具有下列特点: 
● 8位或者9位负载数据 
● 奇校验、偶校验或者无奇偶校验 
● 配置起始位和停止位电平 
● 配置LSB或者MSB首先传送 
● 独立收发中断 
● 独立收发DMA触发 
● 奇偶校验和帧校验出错状态 

什么是LSB/MSB?

        MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。   

  • LSB(Least Significant Bit),意为最低有效位
  • MSB(Most Significant Bit),意为最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。

        UART模式提供全双工传送,接收器中的位同步不影响发送功能。传送一个UART字节包含1个起始位、8 个数据位、 1个作为可选项的第9位数据或者奇偶校验位再加上1个或2个停止位。注意,虽然真实的数据包 含8位或者9位,但是,数据传送只涉及一个字节。 

理解单工半双工全双工

  1.  单工:数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信,举例:电视,广播。
  2. 半双工:数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。
  3. 全双工:数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,举例:电话通信

        UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR来控制。 这里的x是USART的编号,其数值为0或者1。 当UxCSR.MODE设置为1时,就选择了UART模式 

UART发送

        USART收/发数据缓冲器、寄存器UxBUF写入数据时,该字节发送到输出引脚 TXDx。 UxBUF寄存器是双缓冲的。当字节传送开始时, UxCSR.ACTIVE位变为高电平,而当字节传送结束时为低。当传送结束时,UxCSR.TX_BYTE位设置为1。当USART收/发数据缓冲寄存器就绪,准备接收新的发送数据时,就产生了一个中断请求。该中断在传送开始之后立刻发生,因此,当字节正在发送时,新的字节能够装入数据缓冲器。 

UART接收    

        当1写入UxCSR.RE位时,在UART上数据接收就开始了。然后UART会在输入引脚RXDx中寻找有效起始位,并且设置 UxCSR.ACTIVE位为 1。当检测出有效起始位时,收到的字节就传入到接收寄存器,UxCSR.RX_BYTE位设置为1。该操作完成时,产生接收中断。同时UxCSR.ACTIVE变为低电平。 
通过寄存器UxBUF提供收到的数据字节。当UxBUF读出时, UxCSR.RX_BYTE位由硬件清0 

二、项目实施

   每个USART有如下5个寄存器,x是USART的编号,为0或者1

寄存器 解释
UxCSR 控制和状态寄存器
UxUCR 控制寄存器
UxGCR 通用控制
UxBAUD

设置波特率

UxBUF 接收/传送数据缓存

     

32MHZ 系统时钟常用的波特率设置

U0CSR(0x86)—USART0 控制和状态

 U0UCR (0xC4)– USART 0 UART 控制

代码:

未完待续......

展开阅读全文

没有更多推荐了,返回首页