大家好 我是初学者 在做一个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²Ù×÷º¯Êý
#define IIC_SCL PCout(7) //SCL
#define IIC_SDA PCout(6) //SDA
#define READ_SDA PCin(6) //ÊäÈëSDA
void IIC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//RCC->APB2ENR|=1<<4;//ÏÈʹÄÜÍâÉèIO PORTCʱÖÓ
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD ; //ÍÆÍìÊä³ö
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可以用
谢谢大家
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#define IIC_SCL PCout(7) //SCL
#define IIC_SDA PCout(6) //SDA
#define READ_SDA PCin(6) //ÊäÈëSDA
这里错了 应该是PB
一周热门 更多>