您的位置:首页 > 运维架构 > Linux

S5PV210-UART-笔记整理

2016-12-01 20:18 169 查看
Universal Asynchronous Receiver and Transmitter----通用异步收发器。

奇偶校验:

奇校验:信息码之后再加上一个1,信息码中的1的个数加上后面1个1的个数之后如果是奇数那么数据就是准确的。

偶校验:跟奇校验相反。

使用C实验一段数据的CRC校验:

#include <stdio.h>
//计算二进制位数
int bit_len(unsigned int n)
{
int len;
for(len=0;n;len++)
n>>=1;
return len;
}
//生成校验码;a为源码左移动R位之后的码,b为除数
int crc(int a,int b)
{
int temp;
int res;
temp=a>>(bit_len(a)-4);
res=temp^b;
//printf("res=%#x\n",res);
a=(res<<(bit_len(a)-4))|(a&((bit_len(a)-4)<<0));
//printf("a=%#x\n",a);
if(bit_len(a)>=(bit_len(0xb)))
{
crc(a,b);
}
else
{
return a;
}
}

int main(void)
{
printf("请输入源码:\n");
int source_code=0;
scanf("%x",&source_code);
source_code=(source_code<<3);
printf("校验码:%#x\n",crc(source_code,0xb));
printf("发送的数据:%#x\n",source_code|crc(source_code,0xb));
return 0;
}


波特率和bps之间的关系:
码元:承载信息量的单位;

比特率(bps)是对传输信息量的度量,波特率是在单位时间内对传输码元符号个数的度量。

UART的数据格式:

空闲的时候位高电平,开始发送数据的时候先是起始位,然后八位数据位一位奇偶校验位,之后是停止位,最后就是空闲高电平。一帧数据总共为十一(起始位加上停止位)位。

UART通信数据线:

三条数据线:RXD,TXD,GND

全双工工作模式、异步通信模式

RS232/RS485RS422的区别:

RS232是全双工,RS485是半双工,RS422是全双工

RS485和RS232在通讯的物理协议上面有区别,RS485是差分传输方式,RS232是单端传输方式。

差分信号的特点:

1、在控制”基准“电压的时候,很容易识别小信号;

2、对外部电磁干扰是高免疫

3、在单电源系统中很好处理”双极“信号

TVS二极管:

吸收电路浪涌电压,保护电路。

S5PV210-UART的特点:

UART0/1/2/3在DMA或者中断的基础上进行操作。

UAER1具有256字节的FIFO,UART1具有64字节的FIFO,UART2/3具有16字节的FIFO

关于UART FIFO:

FIFO先进先出,FIFO只是一个缓冲器用来存放UART接受的数据,避免串口接受一次数据进入中断而导致CPU的利用效率不够高。

但是为了防止接收数据的时候没有达到FIFO指定的字节数而不去进行及时处理的问题还要加上接收数据超时处理的函数。

自动流控AFC:

为的是防止接收端的缓冲区满了之后发送端还在发送数据导致数据丢失的处理方法。

特别注意的是在UART初始化函数之后一定要加上一定的延时为的是让硬件有足够的时间降频或者升频。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UART linux