您的位置:首页 > 其它

通信协议——uart

2017-10-08 09:38 218 查看
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上,且UART可实现全双工通信。

 

UART初始化需要定义的一些参数:

1. 起始位

2. 数据位(8位或9位)

3. 奇偶校验位(第9位)

4. 停止位

5. 波特率设置

如下图所示

 


UART接收数据过程

1. 输入移位寄存器将在串行数据输入线上的数据逐位移入,当数据装满后,发送到输入缓冲寄存器(SBUF)中

2. 当SBUF装载完数据时,产生中断,并且接收中断标志位置1

3. CPU可以此时可以在中断函数中读取SBUF中的数据

其接收中断函数如下:

/*************************************************************************
4000
******
* 函 数 名         :Uart_Interrupt()
* 函数功能		   :串口中断接收
* 输    入         :无
* 输    出         :无
*******************************************************************************/
void Uart_Interrupt(void) interrupt 4
{
if(RI)
{
ES = 0;  //串口中断禁止
RI = 0;  //清除接收标志位
res = SBUF;   //将接收到的数据存入一个变量
if(res != 0x0a)    //判断接收到的数据是否为换行符,0xa0为换行符的ASCII码
{
Buff[len++] = res;   //存入缓存数组
}
else
{
if(Buff[len-1] == 0x0d)     //判断前一个数据是否为回车符
{
urt_flag = 1;           //置串口标志位为1,说明数据已经接收完成
len--;                  //接收的数据不包括回车符,所以减1后为实际的字符数目
}
}
ES=1;
}
}


UART发送数据过程

1. CPU将需要发送的数据传递给输出缓冲寄存器(SBUF,发送和接收缓冲寄存器是地址重叠,但物理结构独立的两个缓冲寄存器)

2. 输出移位寄存器接收输出缓冲寄存器的数据,然后一位一位进行输出,在输出完成后,发送标志位置1,完成数据发送

 其发送数据函数如下:

/*******************************************************************************
* 函 数 名         :Uart_Sendstring(unsigned char *str)
* 函数功能		   :串口发送函数
* 输    入         :需要发送的数组数据
* 输    出         :无
*******************************************************************************/
void Uart_Sendstring(unsigned char *str)
{
unsigned char *str1;

str1 = str;
while(*str1 != '\0')     //空字符,意味着结束,也可以自行定义一个结束字符
{
SBUF = *str1;
while(TI == 0);  //等待发送标志位置位
TI = 0;
str1++;
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: