网站首页 | 经济学论文 | 证券金融 | 管理学 | 会计审计 | 法学论文 | 医药学论文 | 社会学论文 | 教育论文 | 计算机 | 艺术论文 | 哲学论文 | 财务管理 |
写论文网
  • 农村研究论文
  • 人口问题论文
  • 伦理道德论文
  • 社会其它论文
  • 您的位置:写论文网 > 社会学论文 > 农村研究论文 > 【应用McBSP实现I2C总线控制... 正文 2019-12-27 07:27:03

    【应用McBSP实现I2C总线控制器】 总线控制器

    相关热词搜索:

    应用McBSP实现I2C总线控制器

    应用McBSP实现I2C总线控制器 关键字:I2C总线 GPIO McBSP DSP 1 引 言 TI公司的TMS320C6000[1,2]系列是高性能的DSP,可广泛的用于XDSL、 无线基站、数字图像处理等方面。在进行数字图像处理时,通常需要视频解码器 诸如SAA7111A之类的模拟视频前端,而大多数的视频解码器进行初始化通常是 通过两线的I2C总线接口,但是现在的DSP和MCU大部分都没有I2C总线接口,在 这种情况下我们可以应用两个通用的IO线,通过软件的方法来模拟I2C总线的协 议,继而完成I2C总线的接口。在TMS320C6000中通常都有两个或两个以上的多 通道缓冲串行接口McBSP,McBSP不仅可以配制成串行接口还可以独立的配制 成通用的输入(GPI)、输出(GPO)和输入输出端口(GPIO)。

    I2C[3]串行总线是用双向数据线(SDA)和串行时钟线(SCL)两根信号线,在 连接到该总线的器件之间传送信息。总线上的每个器件均可设置一个唯一地址, 然后根据所设的功能进行信息的发送或接收。除了作为发送器和接收器以外,在 执行数据传输时,总线的器件还可以设定为主控器和受控器。通常由主控器启动 总线上的数据传输,并产生数据传输所需的时钟信号。而被其寻址的其它器件均 为受控器,这意味着总线上可连接多个有控制总线的器件。

    I2C总线上的数据传输率为100kbit/s,快速方式下可达400kbit/s。连接 到总线上的器件数仅受400pF的总线电容的限制。同时,为了避免总线信号的混 乱,要求连接到总线上的各器件输出端必须是集电极开路或漏极开路,以便产生 “线与”功能。I2C总线上的SDA和SCL线都是双向传输线,它们可通过一个电阻 连接到正电源端,当总线处于空闲状态时,两条线均为高电平。

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

    配置代码如下:
    McBSP0_SPCR=0x00000000;//McBSP0 发送和接收复位 McBSP0_PCR=0x00003F00;// McBSP0的所有的管脚都配置为GPIO,CLKX0 和FSX0为输出 对于主机来说SCL总是输出,所以它的方向是保持不变的,SCL应该输出0, 1作为接口的时钟,为了实现此功能我们定义一个宏(MACROS):SET_SCLHI( ) SET_SCLLO( ) #define Set_SCLHi( ) McBSP0_SPSA = PCR;
    McBSP0_SPSA |= 0x00000002 #define Set_SCLLo( ) McBSP0_SPSA = PCR;
    McBSP0_SPSA = 0Xfffffffd I2C总线的数据线SDA当写的时候是输入,读的时候是输出。为了改变SDA 的方向可以定义Set_SDADirOut( ) Set_SDADirIn( ) #define Set_SDADirOut( ) McBSP0_SPSA = PCR;
    McBSP0_SPSA | = 0x00000800 #define Set_SDADirIn( ) McBSP0_SPSA = PCR;
    McBSP0_SPSA = 0xFFFFF7FF SDA应该依照数据位的0,1来变化,为了输出1,0定义Set_SDAHi( ) Set_SDALo( ) #define Set_SDAHi( ) McBSP0_SPSA = PCR;
    McBSP0_SPSA |= 0x00000008 #define Set_SDALo( ) McBSP0_SPSA = PCR;
    McBSP0_SPSA = 0xFFFFFFF7 定义好之后可以模拟I2C总线的协议进行传送,例如在SAA7111A上的I2C总 线接口是用来对SAA7111A进行初始化用的,SCL的频率可以从0到400KHZ,为 了控制SCL的频率可以应用DSP的TIMER0来控制。

    当CPU为100MHZ时:
    TCR = 0x00000010;
    // 停止 TIMER0 and TDDR=0 PRD = 6249;
    // TIMER0 rate = CPU-Frequency/(PDR+1) = 100MHz/6250 = 16kHz ... TCR = 0xFFFFFFEF;
    // 开始 TIMER0 3.2 I2C总线协议编程 3.2.1 I2C总线协议读写数据流的编程为了进行I2C总线的通讯,我们选用每位数据流4帧(FRAMES),以便延 迟和噪声干扰最小,4帧每位的数据流保证了SDA不会变化在SCL的边沿处,仅 仅允许数据变化在FRAME0,读仅在FRAME2。如图2所示 I2C总线的写程序如下 void I2CWrite(unsigned int WriteBit) {Set_SDADirOut( );
    // 设置SDA为输出 switch(FrameCount) { case(0): // 起始帧 Set_SCLLo( );
    // SCL 为 0 if (WriteBit == 0) // SDA = WriteBit Set_SDALo( );
    else Set_SDAHi( );
    break;
    case(3): // 第4帧 Set_SCLLo( );
    // break;
    default: // 在第2,3帧 Set_SCLHi( );
    // SCL 为 1 } FrameCount += 1;
    // 帧计数 if (FrameCount 3) { FrameCount = 0;
    BitIndex = (BitIndex 1);
    } // 准备下一个发送位 } I2C总线的读程序与写程序很类似,只需要改变SDA为输入即可。

    3.2.2 I2C总线的开始位和停止位的编程 I2C总线的开始位和停止位有3帧产生,在I2C总线传输过程中,仅当总线 空闲(SCL线和SDA线均为高电平)时,数据传送才能开始,此时总线上的任何器 件均可以控制总线。其中当SCL线为高电平且SDA线由高变低时为开始条件;
    而 当SCL线为高电平且SDA线由低变高时为结束条件。如图3所示 开始位:
    void I2CSTA ( ) { // I2C 开始位Set_SDADirOut ( );//定义SDA为输出 switch ( FrameCount ) { case (1): // 第2帧 Set_SCLHi ( );
    Set_SDALo( );
    break;
    case (2): // 第三帧 Set_SCLLo ( );
    Set_SDALo( );
    break;
    default: // 第一帧 Set_SCLHi ( );
    Set_SDAHi ( );
    } FrameCount += 1;
    // 帧计数 if ( FrameCount 2 ) { FrameCount = 0;
    BitIndex = 0x0080;
    } // 定义的低8位 } 停止位的编程方法只需要按照上面所说的将SCL线为高电平且SDA线由低 变高即可。

    3.2.3 I2C总线的数据格式 起始位受控器件地址读写控制位0/1应答位数据应答位…停止位 I2C总线数据传输格式[3]如图4。其中第一部分为数据传输起始信号,即 由此开始进行数据传送;
    第二部分为受控器地址,用来选择向哪个受控器传送数 据;
    第三部分为读/写控制位,用于指示受控器的工作方式,0表示写,1表示读;

    第四部分是被主控器选中的受控器向主控器回传的确认信号;
    第五部分是所传送 的数据,每传送一个字节数据,都要求有一个应答位;
    第六部分是数据传输的结 束信号。每个具有I2C总线接口的受控器件都有唯一固定的地址,当主控器发送 数据时,I2C总线上挂接的受控器件都会将主控器发出的、位于起始信号后的8 位地址信息与自己的地址进行比较,如果两者相同,则认为该受控器件被选中, 然后按照读/写位规定的工作方式接收或发送数据。可以应用上面的程序来按照 I2C总线的数据格式进行数据传送。

    4 结论应用DSP的McBSP来设计I2C总线接口,硬件接口简单,调试方便,并且 可以节省硬件的花费,此方法已经应用在基于DSP的图像匹配机中,方法可行, 并运行可靠。

    • 范文大全
    • 教案
    • 优秀作文
    • 教师范文
    • 综合阅读
    • 读后感
    • 说说
    【应用McBSP实现I2C总线控制器】 总线控制器》由(写论文网)整理提供,版权归原作者、原出处所有。
    Copyright © 2019 写论文网 All Rights Reserved.