STM32 IIC 时序

 

起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。
停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

 

//产生IIC起始信号
void IIC_Start(void)
{
    SDA_OUT();  //sda线输出
    IIC_SDA=1;   // 拉高数据线        
    IIC_SCL=1;   // 拉高时钟线
    delay_us(4); //延迟 ,延迟是有必要的,参照I2C协议写的
     IIC_SDA=0; //START:when CLK is high,DATA change form high to low ,触发通讯
    delay_us(4);
    IIC_SCL=0; / / ?钳住I2C总线,准备发送或接收数据,方便数据线上的数据变化
}     

 

//产生IIC停止信号
void IIC_Stop(void)
{
    SDA_OUT();//sda线输出
    IIC_SCL=0; // ?
    IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
     delay_us(4);
    IIC_SCL=1;
    IIC_SDA=1;//发送I2C总线结束信号
    delay_us(4);                                   
}

 

REF

https://zhuanlan.zhihu.com/p/338377414

 

posted @   emanlee  阅读(431)  评论(0编辑  收藏  举报
编辑推荐:
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统
点击右上角即可分享
微信分享提示