原子例程i2c驱动收音机芯片AKC6955 失败 求教

2019-07-21 06:30发布

大家好 我是初学者 在做一个i2c驱动收音机芯片的简单程序 直接移植原子例程 但是失败了

时序图如下

i2c选的pb6 pb7
#define SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}

//IO&#178;&#217;×÷&#186;&#175;&#202;&#253;     
#define IIC_SCL    PCout(7) //SCL
#define IIC_SDA    PCout(6) //SDA     
#define READ_SDA   PCin(6)  //&#202;&#228;&#200;&#235;SDA


void IIC_Init(void)
{                        
    GPIO_InitTypeDef GPIO_InitStructure;
    //RCC->APB2ENR|=1<<4;//&#207;&#200;&#202;&#185;&#196;&#220;&#205;&#226;&#201;èIO PORTC&#202;±&#214;&#211;
    RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOB, ENABLE );   
      
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD ;   //&#205;&#198;&#205;ì&#202;&#228;&#179;&#246;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    IIC_SCL=1;
    IIC_SDA=1;

}



我的写寄存器代码

void i2c_write(u8 DEVICE_ID, u8 reg, u8 val)
{
    IIC_Start();
    IIC_Send_Byte(0b00100000);
    IIC_Ack();
    IIC_Send_Byte(reg);
    IIC_Ack();
    IIC_Send_Byte(val);
    IIC_Ack();
    IIC_Stop();

}

板子没问题  接在Arduino可以用



谢谢大家


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。