TI中文支持网
TI专业的中文技术问题搜集分享网站

28035 驱动tm1650数码管

void I2CStart(void)    //开始信号
{
    CLK_H;
    DIO_H;            //5us
    DELAY_US(6);
    DIO_L;
}
void I2Cask(void) //ACK信号
{
    EALLOW;
    GpioCtrlRegs.GPBDIR.bit.GPIO32=0;//  input
    //GpioCtrlRegs.GPBPUD.bit.GPIO32=1;//  Pullup's enabled
    EDIS;
    Uint16 timeout = 1;
    CLK_H;
    DELAY_US(4);
    CLK_L;
    while(SDA &&(timeout<=100))
    {
      timeout++;
    }
    DELAY_US(4);
    CLK_L;
}

//停止信号
void I2CStop(void) //停止信号
{
    CLK_H;
    DIO_L;
    DELAY_US(4);
    DIO_H;
}

//发送一个字节
void I2CWrByte(Uint16 oneByte) //写一个字节高位在前,低位在后
{
    unsigned char i;
    EALLOW;
    GpioCtrlRegs.GPBDIR.bit.GPIO32=1;//  output
    GpioCtrlRegs.GPBPUD.bit.GPIO32=1;//  Pullup's enabled
    EDIS;
    CLK_L;
    DELAY_US(2);
    for(i=0;i<8;i++)
    {

        if(oneByte & 0x0080)
        {
            SDA=1;
        }
        else
        {
            SDA=0;
        }
        oneByte = oneByte<<1;
        CLK_L;
        DELAY_US(4);
        CLK_H;
        DELAY_US(4);
        CLK_L;
    }
}

51程序

void I2CStart(void)    //开始信号
{
    CLK_H;
    DIO_H;            //5ms
    _nop_();      
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    DIO_L;
    
}

void I2Cask(void) //ACK信号
{
    uchar timeout = 1;
    CLK_H;
    _nop_();
    _nop_();
    _nop_();
    CLK_L;
    while((DIO)&&(timeout<=100))
    {
      timeout++;    
    }
    _nop_();
    _nop_();
    _nop_();
    CLK_L;
}

void I2CStop(void) //停止信号
{
    CLK_H;
    DIO_L;
    _nop_();
    _nop_();
    _nop_();
    DIO_H;
}

void I2CWrByte(uchar oneByte) //写一个字节高位在前,低位在后
{
    uchar i;
    CLK_L;
    _nop_();
    for(i=0;i<8;i++)
    {    
        oneByte = oneByte<<1;
        DIO = CY;
        CLK_L;
        _nop_();
        _nop_();
        _nop_();
        CLK_H;
        _nop_();
        _nop_();
        _nop_();
        CLK_L;
    }
}

按照51单片机修改的DSP程序,可是为什么时序不对呢,响应信号中SDA一直为高,请问该怎么修改??

mangui zhang:

这个我觉得参考单片机的没什么意思 

重要的是你配置好C2000的IIC接口

赞(0)
未经允许不得转载:TI中文支持网 » 28035 驱动tm1650数码管
分享到: 更多 (0)