这就是开漏输出在IIC通信中的另一个作用。 SDA是高电平, 说明主设备A可以占用总线, 然后主设备A将SDA拉低, 开始通信。 SDA是低电平, 说明有人已经捷足先登了, 主设备A不能占用总线, 结束通信。 因此,模拟IIC一定要将GPIO端口设置为开漏输出并加上上拉电阻,硬件IIC会自动配置为开漏输出。 审核编辑:汤梓红...
GD32 GPIO模拟IIC Demo GD32 GPIO模拟IIC gpio模拟pwm 一丶简介 平台:msm8953 (android) 环境: ubuntu-16.04 二丶步骤 ① 修改设备树,添加pwm节点: 位置:kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953-mtp.dtsi 在soc中添加节点,如下: gpio-demo { compatible = "gpio-demo"; gpios = <&tlmm 33...
51CTO博客已为您找到关于stm32cubeMX GPIO模拟IIC的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及stm32cubeMX GPIO模拟IIC问答内容。更多stm32cubeMX GPIO模拟IIC相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
首先是初始化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_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...
对SPI、IIC、IIS、UART、CAN、SDIO、GPIO的解释 SPI(Serial Peripheral Interface:串行外设接口); SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连 接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。
IIC仅仅需要两根线:SDA, SCL;(未验证)SCL仅可由主机产生,而且主从机之间的SCL,SDA分别是线与的关系,且都默认开漏。 IIC主机模式基本的操作有:产生开始信号(S),产生开始信号(S),产生重复开始信号,产生应答信号(ACK),接收应答信号,产生非应答信号(NACK)。读一个字节,写一个字节。
SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备...
IIC协议正确,但是一直读取失败,最后发现因为没配置GPIO为开漏输出。 推挽输出和开漏输出 推挽输出: 输出逻辑0,则N-MOS激活; 输出逻辑1,则P-MOS激活。 开漏输出: 在不接上拉电阻时, 输出逻辑0,则N-MOS激活; 输出逻辑1,P-MOS不会激活, 不会输出高电平。
下图为失败时i2c波形,由波形可看出主机端发送完i2c从端地址0x38后,从端未响应。 下面我们再看一下写成功时候的波形,由波形可看出i2c主机端发送从端地址0x38后,从端有ACK, 主机端继续发送要写入的寄存器地址0xA5, 从端ACK; 主机端继续发送写入寄存器的值0x03, 从端ACK。通信完成。