I2C串行通信(内部集成总线(串行总线))
主要用在板级之间硬件通信
同步半双工总线
同步有时钟线
数据线一根(同一时间只能接受或发送)
(设计为了节省硬件资源)
I2C在通信中实现方法:(协议)
一主多从常见
多主多从也允许
高电平(上拉电阻)使从设备处于空闲状态
主设备只能同时与一个从设备通信
首先选择要通信的设备,在选择传输方向
时钟线SCL
数据线SDA
传输协议:
1.起始信号
数据线由高电平变低电平(下降沿)产生起始信号
2.结束信号
数据线由低电平变高电平(上升沿)产生起始信号
3.校验
主设备定好传输方向,接收方产生应答
应答ACK
非应答NACK
产生应答/非应答之前两根线都是高电平
应答则数据线拉低
非应答则数据线不变/拉高
应答/非应答后会释放数据线,会到高电平
主->从
从设备有设备号:7/10bit(以7bit为主)2的7次方 = 128
0代表主 向 从 发(发送/写入)
1代表从 向 主 发(接受/读取)
第9bit产生应答
然后传输数据
最后结束位
在时钟线的低电平进行数据值的电平变换
在时钟线的高电平锁存
帧格式为9位
LSB低位在前
MSB高位在前(I2C都是MSB)
设备号(设备地址)
设备内地址
EEPROM(E2PROM)
ROM只读存储器
RAM读写(随机性)存储器(内存)
ROM起始全是1
只能由1改成0
PROM
EPROM光?可擦写
EEPROM电信号可擦写
EEPROM存储量小,造价高
ROM类掉电不丢失
RAM读写效率高,掉电丢失
SRAM静态随机性存储器(三极管,MOS管)
稳定性高,造价高
DRAM动态随机性存储器(电容)
电容会放电,所以要定时刷新(充电)
嵌入式一般SRAM,大内存一把DRAM
SDRAM
DDR
FLASH闪存(类似于ROM)块设备
Norflash(无块管理)
Nanflash类似于磁盘(时间长会坏块)
块设备代表存储设备
擦除以块为单位擦除
端序:
大端序(高字节在低位置上),小端序(高字节在高位置上)
Char型无端序概念
Int型0x12345678
12 34 56 78(大端序)
78 56 34 12(小端序)
ARM架构与INTER架构端序会不同(跨平台)
1.写:起始+设备号+传输方向+应答
7bit 1bit(0) 1bit
+从设备内地址+应答
8bit 1bit
+数据+应答+.....
8bit 1bit
+结束
2. 读:起始(主)+设备号+传输方向+应答+从设备内地址+应答
+(结束)(主)(对同一个设备调整方向时,可以不发结束位,但要有起始位)
+起始(主)+设备号+传输方向+应答
+数据(从)+应答(主)+.....
+数据(从)+非应答(主)+结束(主)
7位从设备地址:
1010 +a0 +a1+a2
ROM分块
RAM分页
I2C
写的话,只能一页一页的写
读的话,可以从头到尾的读
AT24C02读写:
按字节写:
每写一个字节,要带一个地址
按页写:范围(1-16字节(Byte))
跨页,重新发地址