我用的STM32F103ZET6,其中IIC_SCL接PG0,IIC_SDA接PG1
宏定义部分为:
//SCL--PG0,SDA--> G1
//IO方向设置
#define SDA_IN() {GPIOG->CRL&=0XFFFFFF0F;GPIOG->CRL|=0XFFFFFF8F;}
#define SDA_OUT() {GPIOG->CRL&=0XFFFFFF0F;GPIOG->CRL|=0XFFFFFF3F;}
//IO操作函数
#define IIC_SCL PGout(0) //SCL
#define IIC_SDA PGout(1) //SDA
#define READ_SDA PGin(1) //输入SDA
初始化部分为:
//初始化IIC
void IIC_Init(void)
{
RCC->APB2ENR|=1<<8;//先使能外设IO PORTG时钟
GPIOG->CRL&=0XFFFFFF00;//PG0/PG1 推挽输出
GPIOG->CRL|=0X00000033;
GPIOG->ODR|=3; //PG0/PG1 输出高
}
然后我测试的部分为:
u8 Test_WCode[6]={0x31,0x32,0x33,0x34,0x35,'\0'};
u8 Test_RCode[6];
AT24CXX_Write(100,Test_WCode,6);//写入6个字节
AT24CXX_Read(100,Test_RCode,6);//读出6个字节
我将写入的数组发送到串口显示
为:31 32 33 34 35 00
我将读出的数组发送到串口显示
为:FF FF FF FF FF FF
为什么都是0XFF? |