DSP即数字信号处理器,是一种广泛应用的嵌入式处理器,主要应用是实时快速地实现各种数字信号处理算法,目前,国际主要的DSP供应商是TI公司,其TMS32系列产品占据了DSP市场近一半的份额,为了用户能方便快捷的进行系统的开发与集成,TI公司在一些型号的DSP中集成了I2C通信模块,本文以TMS320C6713为例,使用TI公司DSP开发工具CCS2.2提供的CSL(Chip SupPort Lib,片级支持库)配置I2C模块。
TMS320C6713是一款高性能浮点DSP,内部集成2个I2C接口:I2C0和I2C1。其中,I2C1的引脚与McBSP1(Multichannel Buffered Serial Port 1,多通道缓存串口1)的引脚复用,默认情况下是激活McBSP1,使用I2C1必须将寄存器DEVCFG的最低位置1[2,3]。I2C模块的结构如图1所示。
I2C模拟还可以与EDMA(Enhanced Direct Memory Access,增强型内存直接访问)配合工作。当数据由I2CDXR拷贝到I2CXSR或由I2CRSR拷贝到I2CDRR时,都会触发EDMA操作,EDMA会发送下一个数据或读取收到的数据。由于EDMA操作不占用DSP处理时间,可以大大提高DSP的运算速度,避免流水线被不停的打断,因此,如果使用I2C模块与外设进行数据量比较大的数据交换,比如,将缓存中的大量数据保存到I2C接口的Flash中,可以使用EDMA操作,如果交换的数据量比较小,而对实时性比较高,比如,接收I2C接口传感器的采集数据,可以采用DSP中断的方式;如果交换的数据量比较小,对实时性要求又不高,比如,对I2C设备进行设置,则可以使用DSP查询状态位的方式,本文例程使用I2C模块配置OV7620,采用查询方式。