write i2c testi2c i2c-1: sendbytes: NAK bailout. #4:对于I2C-1,提示没有收到ACK验证,即NOACK,这个很可能是地址不对。在SCL的第9个脉冲期间,从设备拉低SDA,并在SCL的高电平期间保持住,这就是一个确认ACK,否则就是NOACK。 向上0True向下 我查了下,板子上的设备接的的I2C0,而我在测试程序里只能打开/d...
#define SW_I2C_SDA_HIGH GPIO_SetBits(gpio->SDA_Port,gpio->SDA_Pin) // I2C SDA脚输出1 #define SW_I2C_SDA_INPUT sw_i2c_set_sda_input(gpio) // 将SDA脚方向设置为输入 #define SW_I2C_SDA_OUTPUT sw_i2c_set_sda_output(gpio) // 将SDA脚方向设置为输出 #define SW_I2C_SDA_STATUS sw_i...
I2C_Start(); I2C_Send_Byte(Device_Write);//Sendthedeviceaddress I2C_Wait_Ack(); //Waitfortheacksignal I2C_Send_Byte(Register); //Sendtheregisteraddress I2C_Wait_Ack(); //Waitfortheacksignal I2C_Start(); I2C_Send_Byte(Device_Read); //Sendregistervalue I2C_Wait_Ack(); SDA_High(); /...
i2c_write_byte(0x40);//写控制指令 0x20<<1 R/Wacktmp =i2c_recv_ack();if(acktmp ==1) { PRK("i2c_recv_ack fail\n");//return -1;} i2c_write_byte(val); acktmp=i2c_recv_ack();if(acktmp ==1) { PRK("i2c_recv_ack fail\n");//return -1;} i2c_stop();if(acktmp ==1)...
登录后复制/* 通过模拟I2C向从站写数据 */SimuI2CStatusWriteDataBySimuI2C(SimuI2CObjectType *simuI2CInstance,uint8_t deviceAddress,uint8_t *wData,uint16_t wSize) {//启动通讯SimuI2CStart(simuI2CInstance);//发送从站地址(写)SendByteBySimuI2C(simuI2CInstance,deviceAddress);if(SimuI2CWaitAck(simu...
图4 I2C写入寄存器帧格式 具体实现方法可以参考以下代码: void I2C_Write_Register(unsigned char Device, unsigned char Register,unsigned char Value) { I2C_Start(); I2C_Send_Byte(Device); //Send the device address I2C_Wait_Ack(); //Wait for the ack signal I2C_Send_Byte...
有时候芯片上i2c数量不多,我们可以通过gpio模拟i2c时序,达到通过i2c与芯片交互目的。 gpio_i2c.h#ifndef _GPIO_I2C_H #define _GPIO_I2C_H #if 1 #define GPIO_I2C_MAGIC_BASE 'I' #define GPIO_I2C_READ_BYTE _IOR(GPIO_I2C_MAGIC_BASE,0x01,int) #define GPIO_I2C_WRITE_BYTE _IOW(GPIO_I2C_MAGIC...
【STM32】GPIO模拟I2C程序示例 01. IIC简介 IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps ...
1/*通过模拟I2C实现对从站先写数据紧接读数据组合操作*/2SimuI2CStatus WriteReadDataBySimuI2C(SimuI2CObjectType *simuI2CInstance,uint8_t deviceAddress, uint8_t *wData,uint16_t wSize,uint8_t *rData, uint16_t rSize)3{4//启动通讯5SimuI2CStart(simuI2CInstance);6//发送从站地址(写)7SendByte...