应用mcbsp实现i2c总线控制器

应用mcbsp实现i2c总线控制器

ID:25023331

大小:54.00 KB

页数:5页

时间:2018-11-17

应用mcbsp实现i2c总线控制器_第1页
应用mcbsp实现i2c总线控制器_第2页
应用mcbsp实现i2c总线控制器_第3页
应用mcbsp实现i2c总线控制器_第4页
应用mcbsp实现i2c总线控制器_第5页
资源描述:

《应用mcbsp实现i2c总线控制器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、应用McBSP实现I2C总线控制器

2、第1内容加载中...摘要:提出了在TMS320C6000系列DSP上应用McBSP实现I2C总线接口协议的方法,使DSP可以接入其他需要I2C总线配置的智能器件,系统结构简单,硬件设计容易,资源消耗小。关键字:I2C总线GPIOMcBSPDSP1引言TI公司的TMS320C6000[1,2]系列是高性能的DSP,可广泛的用于XDSL、无线基站、数字图像处理等方面。在进行数字图像处理时,通常需要视频解码器诸如SAA7111A之类的模拟视频前端,而大多数的视频解码器进行初始化通常是通过两线的I2C总线接口,但是现在的DSP

3、和MCU大部分都没有I2C总线接口,在这种情况下我们可以应用两个通用的IO线,通过软件的方法来模拟I2C总线的协议,继而完成I2C总线的接口。在TMS320C6000中通常都有两个或两个以上的多通道缓冲串行接口McBSP,McBSP不仅可以配制成串行接口还可以独立的配制成通用的输入(GPI)、输出(GPO)和输入输出端口(GPIO)。I2C[3]串行总线是用双向数据线(SDA)和串行时钟线(SCL)两根信号线,在连接到该总线的器件之间传送信息。总线上的每个器件均可设置一个唯一地址,然后根据所设的功能进行信息的发送或接收。除了作为发送器和接收器以外,在执行

4、数据传输时,总线的器件还可以设定为主控器和受控器。通常由主控器启动总线上的数据传输,并产生数据传输所需的时钟信号。而被其寻址的其它器件均为受控器,这意味着总线上可连接多个有控制总线的器件。I2C总线上的数据传输率为100kbit/s,快速方式下可达400kbit/s。连接到总线上的器件数仅受400pF的总线电容的限制。同时,为了避免总线信号的混乱,要求连接到总线上的各器件输出端必须是集电极开路或漏极开路,以便产生“线与”功能。I2C总线上的SDA和SCL线都是双向传输线,它们可通过一个电阻连接到正电源端,当总线处于空闲状态时,两条线均为高电平。2硬件设计

5、I2C总线的硬件设计非常方便,只需要将SDA和SCL连接即可,在I2C总线上只允许有一个主控器,其余的都是受控器。当节点的个数大于了400pF的限制时,可以通过总线驱动器如82B715来进行总线扩展。连接见图13软件设计3.1McBSP的配置I2C总线应用McBSP的两个管脚,首先禁用McBSP功能以便将McBSP的管脚配制成GPI、GPO、GPIO。本文应用McBSP0的CLKX0作为I2C总线的SCL,FSX0作为I2C总线的SDA,McBSP的DX,DR,通常不能配置成I2C的SDA,因为SDA是双向的,而DX,DR只能配制成单一的输入或输出。配置

6、代码如下:McBSP0_SPCR=0x00000000;//McBSP0发送和接收复位McBSP0_PCR=0x00003F00;//McBSP0的所有的管脚都配置为GPIO,CLKX0和FSX0为输出对于主机来说SCL总是输出,所以它的方向是保持不变的,SCL应该输出0,1作为接口的时钟,为了实现此功能我们定义一个宏(MACROS):SET_SCLHI()SET_SCLLO()#defineSet_SCLHi()McBSP0_SPSA=PCR;McBSP0_SPSA

7、=0x00000002#defineSet_SCLLo()McBSP0_SPSA=PC

8、R;McBSP0_SPSA=0XfffffffdI2C总线的数据线SDA当写的时候是输入,读的时候是输出。为了改变SDA的方向可以定义Set_SDADirOut()Set_SDADirIn()#defineSet_SDADirOut()McBSP0_SPSA=PCR;McBSP0_SPSA

9、=0x00000800#defineSet_SDADirIn()McBSP0_SPSA=PCR;McBSP0_SPSA=0xFFFFF7FFSDA应该依照数据位的0,1来变化,为了输出1,0定义Set_SDAHi()Set_SDALo()#defineSet_SDAH

10、i()McBSP0_SPSA=PCR;McBSP0_SPSA

11、=0x00000008#defineSet_SDALo()McBSP0_SPSA=PCR;McBSP0_SPSA=0xFFFFFFF7定义好之后可以模拟I2C总线的协议进行传送,例如在SAA7111A上的I2C总线接口是用来对SAA7111A进行初始化用的,SCL的频率可以从0到400KHZ,为了控制SCL的频率可以应用DSP的TIMER0来控制。当CPU为100MHZ时:TCR=0x00000010;//停止TIMER0andTDDR=0PRD=6249;//TIMER0rate=CPU-F

12、requency/(PDR+1)=100MHz/6250=16kHz...TCR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。