void IIC_Init(void); //初始化IIC的IO口 void IIC_Start(void); //发送IIC开始信号 void IIC_Stop(void); //发生IIC停止信号 void IIC_Send_Byte(uint8_t txd); //IIC发生一个字节 uint8_t IIC_Read_Byte(unsigned char ack);//IIC读取一个字节 uint8_t IIC_Wait_Ack(void); //IIC等待应答AC...
void IIC_Start(void); //发送IIC开始信号 void IIC_Stop(void); //发送IIC停止信号 void IIC_Send_Byte(u8 txd); //IIC发送一个字节 u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节 u8 IIC_Wait_Ack(void); //IIC等待ACK信号 void IIC_Ack(void); //IIC发送ACK信号 void IIC_NAck(void...
这就是开漏输出在IIC通信中的另一个作用。 SDA是高电平, 说明主设备A可以占用总线, 然后主设备A将SDA拉低, 开始通信。 SDA是低电平, 说明有人已经捷足先登了, 主设备A不能占用总线, 结束通信。 因此,模拟IIC一定要将GPIO端口设置为开漏输出并加上上拉电阻,硬件IIC会自动配置为开漏输出。 审核编辑:汤梓红...
rData++;if(rSize==0) {IIC_NAck(simuI2CInstance); }else{IIC_Ack(simuI2CInstance); } }//结束通讯SimuI2CStop(simuI2CInstance);returnI2C_OK; } 3、驱动的使用前面 前面已经设计并实现了GPIO模拟I2C通讯的驱动,下面我们还需要使用此驱动设计一个简单的应用以验证驱动设计的是否合理。 3.1、声明并初始化对...
首先了解IIC通信的时序,这里以MPU6050举例子。 这个图就是IIC的通信时序(所有的IIC设备都符合这个规则):我之前也写了一个IIC笔记(可能也有点抽象) 起始信号:SCL高电平,SDA下降沿。停止信号:SCL高电平,SDA上升沿。 等待应答:主设备写一个数据之后,从设备需要应答,主设备将SDA拉高,读取SDA电平(由于有线与的操作)...
STM32CubeMX配置gpio模拟IIC 关于STM32 GPIO的配置等问题 一、GPIO的基本结构图示 二、模式 直接上图: 图表数据解析: 三、配置等问题 问题 一、GPIO的基本结构图示 提示:图片来自STM32中文参考手册P176 STM32英文参考手册也有内容无差别 二、模式 我们搜索的大多数资料显示的都是有8种模式;输入4种输出4种。但...
1 #include "iic.h" 2 3 void IIC0_Delay(u32 count) 4 { 5 for(uint32_t i= count*3;i>0;i--){} 6 //Sys_HardDelayUs(count); 7 //rt_thread_mdelay(1); 8 } 9 void SCL0_OUT(void) 10 { 11 gpio_init(GPIOB, GPIO_MODE_OUT_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_8); 12 }...
IIC_timeout(GET_SDA_DAT)) {goto IIC_TOUT;} //等待数据拉低#define IIC_SLAVE_SEND_LOW WAIT_IIC_SCL_LOW; SDA_OUT; SET_SDA_LOW; WAIT_IIC_SCL_HIGH;#define IIC_SLAVE_SEND_HIGH WAIT_IIC_SCL_LOW; SDA_OUT; SET_SDA_HIGH; WAIT_IIC_SCL_HIGH;#define IIC_SLAVE_SEND_ACK IIC_SLAVE_SEND...
{11returnI2C_ERROR;12}1314simuI2CInstance->Delayus(1000);1516while(rSize--)17{18*rData=RecieveByteBySimuI2C(simuI2CInstance);19rData++;20if(rData==0)21{22IIC_NAck(simuI2CInstance);23}24else25{26IIC_Ack(simuI2CInstance);27simuI2CInstance->Delayus(1000);28}29}3031//结束通讯32SimuI2C...
SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备...