01-怎么看原理图之GPIO
设置为不同类型的GPIO端口
输出引脚
上图左侧:电源作为输出源,提供高低电压
上图右侧:GPIO端口可以配置为输出引脚,提供高低电压
输入引脚
上图左侧:用万用表读取连接点的电压
上图右侧:GPIO端口配置为输入端口,读取连接点的电压
1.引脚设置为输入,那么该引脚可以通过寄存器读取该引脚的状态,是高电平还是低电平(比较典型的按键,程序通过引脚的状态来判断按键是否按下);
2.引脚设置为输出,那么该引脚可以通过写寄存器使引脚输出高电平或者低电平(比较典型的Led灯引脚,程序通过写寄存器来让引脚输出高低电平,来达到Led亮的目的)
中断引脚
上图:2440配置为响应按键中断,在按键按下时,CPU能立刻收到该信号,并做出响应处理
比方:你耳朵没有聋(耳朵为中断源),当你正在学习,别人喊你帅哥(耳朵产生中断信号),你会停下手中的笔(保存现场),抬起头邪魅一下(耳朵中断的处理方法),然后下笔继续学习(恢复现场)
上拉电阻
上图左侧:在这个NPN三极管中,基极输出0,发射机被截止,集电极悬空,无法判断集电极的电压
上图右侧:在这个NPN三极管中,基极输出0,发射机被截止,集电极存在上拉电阻,可以确定集电极的电压为3.3V
用在PGIO端口上的上拉电阻
上图左侧:1)开关闭合,引脚读取的输入是低电平。2)开关松开,引脚悬空,无法确定高低电平
上图右侧:1)开关闭合,引脚读取的输入是低电平。2)开关松开,由于存在上拉电阻,引脚读取的输入是高电平(能确定开关的状态)
怎么用操作GPIO
以输出引脚-点亮LED1举例:
- 将GPIO端口配置为输出引脚
- 设置寄存器,设置输出高电平还是低电平
查看原理图
原理图中:
- 名称相同的节点,实际是连接在一起的
- nLED_1 前面的n表示低电平有效
从原理图中看出GPF4端口控制LED1,并且在输出低电平的时候点亮LED1
查看用户手册
从寄存器的名字可以看出
- GPFCON寄存器用于配置PGIO端口,端口是输入、输出、还是中断
- GPFDAT寄存器:1)端口为输出端口时,用于写值,设置输出的内容。2)端口为输入端口时,用于读取输入的内容
- GPFUP寄存器:端口连接有上拉电阻
GPF4控制LED1
- GPFCON[9:8] 设置为 01,就将GPF4配置为输出端口
- GPFDAT[4] : 该位设置为0,就输出低电压,点亮LED
门电路
看一下大概长什么样子
协议类接口
协议类接口遵循的原则
你说的别人能听懂 | 双发约定信号的协议 |
你的 语速要让别人接受 | 双方满足时序要求 |
02-怎么看原理图之协议类接口-UART
Q:串口一根线发送数据,一根线接收数据,在数据线上传输的只有0和1两种状态,那串口是怎么传输大于两个状态的数据?
通过jz2440发送字符’A’到PC,举例
在串口通信之前,双发需事先约定通信协议,例如PC机通过串口连接到jz2440,需要事先知道jz2440的串口是如何设置的,然后根据jz2440的串口设置,设置PC端的串口通信软件
约定项:
- 波特率:一秒钟有多少个周期
- 数据位:发送一个数据占多少位
- 停止位:发送完一个数据之后,休息多少个周期
- 校验位:检验发送的一个数据是否传输错误
- 等等,还有很多可以约定的项 (可以约定,但是通信双发可以不使用这些约定项)
下面的图示,仅约定了波特率、数据位、停止位
时间 | 含义 |
---|---|
T0 | 在jz2440上的串口无数据传输时,TxD维持高电平 |
T1 | 当有数据要发送时,TxD将维持1个周期的低电平,同时PC也知道jz2440要发送数据了 |
T2 ~ T9 | 'A’字符为0x0100,0001,每一个周期发送1位数据 |
T10 | 数据发完,维持一周期高电平(因为约定了数据位、停止位,PC知道T10高电平表示停止位) |
03-怎么看原理图之协议类接口-I2C
看上图的I2C设备原理图可知
- IIC设备对外有两接口:SCL,SDA
I2C设备通过IIC总线连接在一起,jz2440中的I2C控制器与I2C连接线大致如下
I2C之间怎么传递数据:字符’A’:0x0100,0001
时刻 | 含义 |
---|---|
0 | 在该时刻,I2C控制器无数据发送,SDA和SCL保持高电平 |
开始信号 | 准备发送:SCL为高电平,SDA有高电平向低电平跳变,开始传输数据 |
1 ~ 8 | 发送数据:SCL发出脉冲:SDA数据在SCL低电平期间才能变化,SDA数据在SCL高电平才能传输 |
ACK | I2C控制器在该时刻不驱动SDA,由AT24C02A驱动,拉低SDA,意味数据接收到了 |
I2C总线上可以挂接多个设备,意味着每个设备都有自身的标记-设备地址当I2C接收到自己的地址时,才进行数据的回应,像不像arp
下面的图示是I2C先找到指定的I2C设备,再进行读写
步骤:
- 指定要访问的I2C设备的地址,指定对该I2C的访问是读还是写
- 被访问的I2C设备回复ACK
- 发送要访问设备中数据的地址,被访问设备回复ACK
- 如果是写,则发送要写的数据给被访问的设备,被访问设备回复ACK
- 最后发送结束信号,表示结束数据传输
从哪里获取要访问的I2C设备的地址:对应I2C设备的用户手册
后门的三位对应I2C的引脚确定 A0、A1、A2
具体被访问的I2C设备怎么通信,还需参考I2C的用户手册