day48-硬件学习之GPT定时器、UART及I2C
一、GPT定时器(通用目的定时器)
1.1 GPT的特性
- 一个可选时钟源的 32 位向上计数器。
- 两个输入捕获通道,可以设置触发方式。
- 三个输出比较通道,可以设置输出模式。
- 可以生成捕获中断、比较中断和溢出中断。
- 计数器可以运行在重新启动(restart)或(自由运行)free-run 模式。
1.2 时钟源选择
时钟有5种选择,选择时钟后再进行分频。
- 直接用24M晶振
- 外部时钟GPT_CLK
- 外围时钟
- 低频基准时钟
- 高频基准时钟
GPTx_IR寄存器介绍
该寄存器用于对回滚中断、输入捕获中断、输出比较中断进行使能和失能的配置。(详见参考手册P1236)。GPTx_OCRx寄存器介绍
用来配置输出比较寄存器的值,大小为0~2^32-1。GPTx_ICRx寄存器介绍
用来存放输入捕获到的值,该寄存器的只有可读权限。GPTx_CNT寄存器介绍
主计数器的寄存器。GPT_CNT是一个只读寄存器,可以读取而不影响GPT的计数过程。
二、UART
IMX中设置了FIFO缓冲区,提高CPU的执行效率;
相关寄存器:
2.1 实验目标:使用115200,n,8,1来实现UART
uart.c:
uart.h
2.2 移植库
步骤:
- 获取源码
- 进行适配(将源码与本机相匹配);
三、I2C
I2C(内部集成电路总线):同步串行半双工通信;(通常用于芯片与芯片之间)
对于硬件设置上,为了保证双方在释放总线时,能呈现高电平,需在每根线上(SCL,SDA)接上拉电阻,上拉电阻阻值为4.7K~10K
- 同步串行半双工通信总线方式;
- 用于芯片与芯片之间;
- 通信方式:
时钟信号由主机提供;
I2C采用MSB(高位先行原则) ;
I2C规定时钟信号为低电平时,发送方可以修改SDA;但高电平时,不可修改SDA,是接收方采用时间;
在时钟信号线为高电平时,主机将电平由低电平拉向高电平,发送停止位,结束通信;
步骤:
(1)发送方发一个起始信号(在SCL为高电平时,SDA发送一个低电平);
(2)传输数据,根据高位先行原则(MSB)且在低电平时,发送方可以修改SDA,高电平时不可以修改SDA,是接收方接收的时间;
(3)发送完一个字节后,等待接收方应答信号,若为低电平,则表示已接收(ACK),反之为NACK
(4)在SCL为高电平时,发送方将SDA拉高,结束通信
主机写:
先发送起始位,传输设备地址和数据流向位,数据流向位为低电平(表示主机向从机发送信息),接受从机应答(ACK)后,发送数据存放地址,从机应答,发送数据内容,发送完毕,从机发送应答,主机在时钟信号线为高电平时,将数据线由低电平拉向高电平,结束发送。
主机读:
主机发送起始位,发送从机地址与数据流向位为写,从机应答;发送数据存放地址,从机应答后;重新发送起始位,发送从机地址与数据流向位为读,从机应答;从机发送数据,主机发送应答信号;当数据读取完后,主机发送NACK,并将电平拉高,结束读取。