嵌入式学习第四天
知识点补充:
SP3232E 是一款UART电平转换芯片,实现TTL电平和EIA电平之间转换
TTL电平:处理器一开始发出的电平信号
数字1电平:1.8v~3.3v
数字0电平:0v~1.4v
EIA电平:串口线上的电平(适合远距离传输)
数字1电平:-3v~-15v
数字0电平:3v~15v
UART串口实际使用步骤:
以三星s5p6818为例,打开芯片手册,查看UART相关内容,得到相关硬件信息
S5P6818支持6个UART,目前使用UART0
每个UART控制器内部支持2个64子节的FIFO缓冲区,分别用于暂存接收和发送的数据
每个UART控制器内部还包含一个发送器、接收器和波特率产生器
发送器又包含一个发送缓冲区寄存器和发送移位器
接收器又包含一个接收缓冲区寄存器和接收移位器
波特率产生器负责给发送移位器和接收移位器产生一个波特率,波特率产生器由UART控制器的时钟源决定
查看UART控制器发送和接收数据原理图,得到:
发送数据流程:
cpu以指针的形式将数据放到发送缓冲区,UART控制器自动将发送缓冲区的数据放到发送移位器,发送移位器自动将数据一位一位放到TX数据线上,发送数据的速度由UART控制器时钟源决定
接收数据流程:
接收移位器自动从RX数据线上一位一位将数据接收,接收移位器自动将数据拷贝到接收缓冲区中暂存,cpu以指针的形式从接收缓冲区中读取数据
波特率配置公式:
UBRDIV0+UFRACVAL0/16=(SCLK_UART/(bps*16))-1
"bps":波特率
SCLK_UART:时钟源
如:SCLK_UART为40MHz,波特率为115200
UBRDIV0+UFRACVAL0/16=(40000000/(115200*16))-1 = 20.7
UBRDIV0=20(取整)
UFRACVAL0=0.7*16=11(取整)