一文了解I²C总线、UART总线和A/D转换器的应用设计

寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在传统的基于寄存器的开发模式中,使用一个外设往往要阅读英文手册,理解寄存器每一位的含义,一步一步操作、调试,十分麻烦。AWorks提供的外设通用接口不仅可以跨平台复用,而且非常简洁,一个外设往往只有2~3个接口。本文将介绍通用的I²C、UART和ADC接口。本文为《面向AWorks框架和接口的编程(上)》第三部分软件篇——第7章通用外设接口——第4~6小节:I²C总线、UART总线和A/D转换器。

 
7.4  I²C总线
 
7.4.1  I²C总线简介
 
I²C器件的两线制总线,不仅硬件电路非常简洁,而且还具有极强的复用性和可移植性。I²C总线不仅适用于电路板内器件之间的通信,而且通过中继器还可以实现电路板与电路板之间长距离的信号传输,因此使用I²C器件非常容易构建系统级电子产品开发平台。其特点如下:
 
总线仅需2根信号线,减少了电路板的空间和芯片管脚的数量,降低了互连成本;
 
同一条I²C总线上可以挂接多个器件,器件之间按不同的编址区分,因此不需要任何附加的I/O或地址译码器;
 
非常容易实现I²C总线的自检功能,以便及时发现总线的异常情况;
 
总线电气兼容性好,I²C总线规定器件之间以开漏I/O互连,因此只要选取适当的上拉电阻就能轻易实现3V/5V逻辑电平的兼容;
 
支持多种通信方式,一主多从是最常见的通信方式。此外还支持双主机通信、多主机通信与广播模式;
 
通信速率高,其标准传输速率为100Kbps(每秒100K位),在快速模式下为400Kbps,按照后来修订的版本,位速率可高达3.4Mbps。
 
7.4.2  I²C接口
 
绝大部分情况下,MCU都作为I²C主机与I²C从机器件通信,因此这里仅介绍AWorks中将MCU作为I²C主机的相关接口,接口原型详见表7.14。
 
                                                                               表7.14 I²C标准接口函数
一文了解I²C总线、UART总线和A/D转换器的应用设计
1.  定义I²C从机器件实例
 
对于用户来讲,使用I²C总线的目的往往是用于操作一个从机器件,比如,LM75、E2PROM等。MCU作为I²C主机与从机器件通信,需要知道从机器件的相关信息,比如,I²C从机地址等。在AWorks中,定义了统一的从机器件类型:aw_I²C_device_t,用于包含从机器件相关的信息,以便主机正确的与之通信。该类型的具体定义用户无需关心,在使用I²C操作一个从机器件前,必须先使用该类型定义一个与从机器件对应的器件实例,例如:
一文了解I²C总线、UART总线和A/D转换器的应用设计
其中,dev为用户自定义的从机实例,其地址可以作为接口函数中p_dev的实参传递。
 
2.  初始化从机器件实例
 
当完成从机器件实例的定义后,还需要完成其初始化,指定从机器件相关的信息,初始化函数的原型为:
一文了解I²C总线、UART总线和A/D转换器的应用设计