ARM:day5

ARM 的接口技术-串口

UART

  • 工作模式 : 全双工
  • 发送二进制 : ASCII码

两个设备通过各自的定时器来接收数据
空闲时拉高电平
要开始发数据时起始位拉低-0
发数据 , 一般是 8 位带一位校验位
结束发送 , 拉高电平回到空闲状态

  • 缺点/特点 : 传输速度不能太快 , 太快时定时器之间的误差就被放大了

  • COMS 和 TTL
    高低电平不一样 , 需要翻译

1.电路板上找到串口2 , 标签COM2/COM7
2.电路图中找到该硬件GPA1_lGPAl_o
3.看芯片手册,了角解如何操作他们的
1)GPAl_lGPAl_0要配置为串口模式
GPIO章节:
2)配置串口的参数波特率起始位校验位停止位 …,让他工作
UART章节:

ULCON2 0x13820000
[1:0] = 0b11 8bit data
[2] == 0 , stop bit num is 1;
[5:3] = 000 没有校验
[6] = 0 ; 红外模式-no
UCON2 0x13820004
[1:0]=0b01, poll模式, CPU轮训获知有没有数据到来
[3:2]=0b01, poll模式, cpu轮训判断是否可以发送数据
UTRSTAT2 0x13820010
x=[0] 1:表示串口收到数据 0:表示还没有
x=[1] 1:发送buf是空的,发送完毕 0:发送中…
UTXH2 0x13820020
[7:0]=data 发送数据
URXH2 0x13820024
data = [7:0]
BDRDIV2 0x13820028
=53
UFRACVAL2 0x1382002C
=4

ARM:day5_第1张图片
volatile 关键字的作用 : volatile 提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有 volatile 关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。

你可能感兴趣的:(嵌入式培训,arm,uart)