STM32 ,IIC通信,保姆级教程来了

IIC通信

    1,物理层

        1》IIC是一种两线串行的通信方式,SCL(时钟线),SDA(数据线)

        2》IIC是一种高位先行的通信方式

        3》IIC可以实现多主机多从机通信,IIC总线上每一个设备都有唯一的ID

        4》IIC总线是飞利浦公司研发的总线协议

        5》IIC总线上必须接两个上拉电阻,用于总线空闲时,将总线拉高

        6》IIC总线上当两个设备同时发起IIC通信时,由总线仲裁决定谁掌握总线控制权

        7》IIC总线的通信速率  标准100kbit/s     快速400kbit/s    高速3.4Mbit/s

        8》IIC总线SCL的作用:当SCL为低电平时,SDA线上的数据无效,当SCL为高电平时,SDA线上的数据有效

        9》IIC总线的时钟线一般由主机控制,并且IIC通信必须由起始信号开始,由停止信号结束

        10》IIC总线通信具有应答机制,接收方应答,发送方等待应答

       

    2,协议层

    起始信号:SCL为高电平期间,SDA由高电平跳变到低电平,产生一个有效的下降沿

    停止信号:SCL为高电平期间,SDA由低电平跳变到高电平,产生一个有效的上升沿

    应答信号:SCL为高电平期间,SDA产生一个有效的低电平

    非应答信号:SCL为高电平期间,SDA产生一个有效的高电平

    等待应答信号:拉高SCL,等待SDA线上的高电平或低电平

    发送数据信号:SCL为高电平期间,数据稳定,SCL为低电平期间,运行SDA数据发生改变

    接收数据信号:拉高SCL,读取SDA线上的数据,拉低SCL,让从机准备有效数据

   

   

    3,IIC信号产生的途径:

        1》片上外设

        2》利用GPIO口模拟IIC协议

       

    4,总线仲裁

        “低电平优先原则”------谁的低电平时间长,谁掌握总线控制,谁先发出低电平,谁掌握总线控制

       

    5,EEPROM----电可擦除可改写存储器-----掉电保护功能

利用GPIO口模拟IIC协议代码篇:

drv_iic.c文件

#include "drv_iic.h"
void IIC_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

	GPIO_InitStruct.GPIO_Pin     =GPIO_Pin_6;//SCL
	GPIO_InitStruct.GPIO_Mode    =GPIO_Mode_Out_OD;
	GPIO_InitStruct.GPIO_Speed   =GPIO_Speed_10MHz;
	GPIO_Init(GPIOB,&
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值