一,基础知识
数据通信方式:
并行通信:利用多条数据线将数据的各位同时传送。
串行通信:利用一条数据线将数据一位位地顺序传送。
异步通信:以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的。
通信协议:通信双方约定的一些规则,在异步通信时,对数据格式有如下约定:规定有空闲位,起始位,资料位,奇偶校验位,停止位。
波特率:衡量数据传输速率标准
记录每秒传送的二进制位数,例如数据传送速率为120字符/秒,而每一位字符为10位,则其传送的波特率为10*120=1200位/秒=1200波特
传送方式:
单工方式:只能A向B发送数据
半双工方式:A能向B发送,B能向A发送,当时A,B不能同时发送数据
全双工方式:A,B能同时互相发送数据。
二,UART基本原理
通用异步收发器,用来串行传输数据,发送时:CPU将数据并行写入UART,UART按照一定的格式在一根信号线上串行发出:接收时:UART检测另一根信号线上的信号,
将串行数据放在缓冲区中,CPU可读取UART获得的这些数据。
从linux系统或者裸机程序中获得数据送到发送缓冲区寄存器中,在FIFO方式,要发送的数据先写入到FIFO寄存器,然后复制到发送移位器,通过发送数据引脚TxDn移位输出,而接收数据从接收数据引脚RxDn输入并移位,然后从接收移位器复制到FIFO寄存器。在非FIFO方式,要发送的数据先写入发送保持寄存器,然后复制到发送移位器,通过TxDn引脚移位输出,要接收的数据通过RxDn引脚并移位,然后从移位器复制到接收保持寄存器。
发送移位器是为了让数据一位一位的往外发送。
3.UART程序流程
1)UART初始化
设置波特率->设置数据传输格式->选择通道工作模式
设置波特率:
UBRDIV=(int)(PCLK/(buad rate *16))-1
eg:波特率为115200bps,UART时钟PCK=40MHz,
UBRDIV=(int)(40000000/(115200*16))-1
设置数据传输格式:
ULCON,设置数据位,校验位,奇校验,还是偶校验,停止位,流量控制
设置通道工作模式:
UCON,设置中断模式,查询模式或者DMA模式
2)发送数据
UTXHn
3)接收数据
URXHn