首先是初始化GPIO,GPIO一定要是开漏输出,外部上拉!!!其他的没有什么值得注意的 /*初始化模拟IIC的GPIO(开漏输出,外部上拉)*/voidi2c_gpio_init(void){GPIO_InitTypeDef IIC_GPIO_InitStructure;CC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);//使能GPIOF时钟IIC_GPIO_InitStructure.GPIO_Pin=SDA|SCL;//...
这就是开漏输出在IIC通信中的另一个作用。 SDA是高电平, 说明主设备A可以占用总线, 然后主设备A将SDA拉低, 开始通信。 SDA是低电平, 说明有人已经捷足先登了, 主设备A不能占用总线, 结束通信。 因此,模拟IIC一定要将GPIO端口设置为开漏输出并加上上拉电阻,硬件IIC会自动配置为开漏输出。 审核编辑:汤梓红...
这就是开漏输出在IIC通信中的另一个作用。 SDA是高电平, 说明主设备A可以占用总线, 然后主设备A将SDA拉低, 开始通信。 SDA是低电平, 说明有人已经捷足先登了, 主设备A不能占用总线, 结束通信。 因此,模拟IIC一定要将GPIO端口设置为开漏输出并加上上拉电阻,硬件IIC会自动配置为开漏输出。 审核编辑:汤梓红 ...
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...
SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备...
在模拟IIC的时候,用GPD3引脚发送数据或读取数据,用GPD4引脚提供时钟信号即可。 二、数据结构 由于s5pc100的GPD这一组的引脚很多,不好单独对其中的某一个引脚操作,为了能单独对其中的某一个管脚单独操作,这里使用了C语言的位域。 typedefstruct{ uint8 GPDDAT_0:1; ...
STM32CubeMX配置gpio模拟IIC 关于STM32 GPIO的配置等问题 一、GPIO的基本结构图示 二、模式 直接上图: 图表数据解析: 三、配置等问题 问题 一、GPIO的基本结构图示 提示:图片来自STM32中文参考手册P176 STM32英文参考手册也有内容无差别 二、模式 我们搜索的大多数资料显示的都是有8种模式;输入4种输出4种。但...
计算结果得出CCR为30,向该寄存器位写入此值则可以控制IIC的通讯速率为400KHz,其实即使配置出来的SCL时钟不完全等于标准的400KHz,IIC通讯的正确性也不会受到影响,因为所有数据通讯都是由SCL协调的,只要它的时钟频率偏差不要太大就行。 数据控制逻辑 I2C的SDA信号主要连接到数据移位寄存器上,数据移位寄存器的数据来源及...
stm32cubeMX GPIO模拟IIC 介绍 本项目是利用GPIO模拟I2C的从机 网上常见的是模拟I2C主机 本项目是作为一个两个单片机之间低速通信的用法 从机 功能 实现I2C从机端读写寄存器 编程思路 I2C的从机实现比起主机来麻烦一些 因为SCL的时序是由主机发送,从机需要响应...
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 }...