您的位置:首页 > 其它

ARM-CortexM4用到的传输协议笔记

2015-05-20 10:56 134 查看
I²C协议

I²C(Inter-Integrated IC)硬件结构上,采取数据和时钟两根线来完成数据的传输和外围器件的扩展,数据和时钟都是开漏的,通过一个上拉电阻接到正电源,因此在不需要时仍然保持高电平。任何具有I²C总线接口的外围器件,无论功能差异有多大,都有相同的电气接口,因此可以挂在总线上,甚至可以在总线工作状态下撤出或者挂上。对各器件的寻址方式是软寻址,因此节点上没有必须的片选线,器件地址给定完全取决于器件类型和单元结构,这也简化了I²C的硬件连接。另外I²C总线能在总线竞争过程中进行总线控制权的仲裁和时钟同步,不会造成数据丢失,因此I²C总线连接的多机系统可以是一个多主机系统。

I²C简化了电路,省去了电路板上的大量走线。支持多主控,如果两个或者多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据被破坏。串行的8位双向数据传输位速率在标准模式下可大100kbps,快速模式下可达400kbps,高速模式下可达3.4Mbps。连接到相同总线的IC数量收到总线最大电容(400pF)的限制。如果加上82B715总线远程驱动器可以将总线电容限制扩展10倍,传输距离增加到15m。

I²C总线中,主机提供时钟信号,负责总线上各个设备信息的传输控制,检测并协调数据的发送和接收。每个I²C器件都有自己的地址,以供在从机模式下使用。SDA为串行数据线,SCL为串行时钟线。

一个由MCU作为主机,通过I²C总线带三个从机的单主机I²C总线系统是最常用典型的连接方式。

I²C总线以串行方式进行数据传输,从数据字节的最高位开始传送。在一个时钟周期内,当时钟线高电平时,数据线上必须保持稳定的电平状态,当时钟信号为低电平时,才允许数据线上的电平状态变化。

I²C总线在传输数据过程中有四种信号类型,分别是开始信号、停止信号、重新开始信号和应答信号。

开始信号:当SCL为高电平时,SDA由高电平向低电平跳变,产生开始信号。

停止信号:当SCL为高电平时,SDA由低电平向高电平跳变,产生停止信号。

重新开始信号:在主机发送开始信号之后,发送停止信号之前,发送一个开始信号,可转换与当前从机的通信模式或者切换到与另一个从机的通信。

应答信号:接收数据的IC在接收到8位数据后,向发送数据的IC发出的特定低电平脉冲。每个数据字节后面都要跟一位应答信号,表示已经收到数据。应答信号在第9个时钟周期出现,这时发送器必须在这一时钟位上释放数据线,由接收设备拉低SDA电平来产生应答信号,由接收设备保持SDA的高电平来产生非应答信号。发送非应答信号后,数据传输会终止,这时会产生停止信号释放总线,或是重新开始信号。

主机发送一个开始信号,启动一次I²C通信;主机对从机选址后,再在总线上传输数据,I²C总线每传输完一个字节后都必须跟随一个应答位,每次通信的字节数是没有限制的;在全部数据传送结束后,由主机发送停止信号,结束通信。

时钟线为低电平时,数据传输将停止进行。当接收器接收完主控制器的一个字节数据后,产生中断信号并进行中断处理,中断处理完毕后才能接收下一个数据,这时,接收器在中断处理是将钳住SCL为低电平,直到中断处理完毕才释放SCL。

I²C总线系统中,寻址字节由被控器的7位地址位和一位方向位组成。主控器发送起始信号后,立即发送寻址字节。

I²S模块驱动的设计

I²S由数据线(串行数据,用二进制补码表示的音频数据),命令(声道)选择线(用于切换左右声道),时钟线(SCK的频率=2*采集频率*采集位数)组成。有时为了使系统间能够更好地同步,还需要另一个MCLK,该信号的频率是采样频率256或者354倍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: