当前位置: 首页 > news >正文

大网站制作黄冈地区免费网站推广平台

大网站制作,黄冈地区免费网站推广平台,asp网站增加新栏目在哪添加,做网站开始要注意什么目录 IIC总线协议介绍 IIC总线结构图 IIC协议时序 1. ACK(Acknowledge) 2. NACK(Not Acknowledge) IO口模拟II2C协议 发送起始信号: 发送停止信号: 检测应答信号: 发送应答信号&#x…

目录

IIC总线协议介绍

IIC总线结构图

IIC协议时序

1. ACK(Acknowledge)

2. NACK(Not Acknowledge)

IO口模拟II2C协议

发送起始信号:

 发送停止信号:

检测应答信号:

发送应答信号:

发送非应答信号:

读取1字节数据:

AT24C02介绍

 AT24C02通讯地址

AT24C02读写时序 

I²C 相关的 AC 特性表

AT24C02写时序

AT24C02读时序

 AT24C02驱动步骤

IIC配置步骤 

为什么IIC总线SDA建议用开漏模式?

AT24C02配置步骤


IIC总线协议介绍

IICInter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。

总线:就是传输数据的通道

协议:就是传输数据的规则

IIC总线结构图

        

① 由时钟线SCL和数据线SDA组成,并且都接上拉电阻,确保总线空闲状态为高电平

② 总线支持多设备连接,允许多主机存在,每个设备都有一个唯一的地址

③ 连接到总线上的数目受总线的最大电容400pf限制

④ 数据传输速率:标准模式100k bit/s  快速模式400k bit/s 高速模式3.4Mbit/s

可以归纳为:

        

  • 主设备向从设备写数据时

    • 主设备先发送起始信号(START 信号),然后发送数据,每次发送 1 个字节(8 位)。主设备在发送完一个字节后,等待从设备返回应答信号(ACK)。如果主机收到 ACK 信号,表示从机已正确接收该字节,主机可以选择继续发送下一个字节,或者发送停止信号(STOP 信号)来结束通信。
  • 主设备向从设备读数据时

    • 主设备先发送起始信号(START 信号),然后开始接收从设备发送的数据。主设备每接收 1 个字节后,需要发送一个应答信号(ACK)给从设备,表示数据接收成功。如果主机发送 ACK 信号,从机会继续发送下一个字节;如果主机发送非应答信号(NACK),表示主机不再需要更多数据,并且主机应发送停止信号(STOP 信号)来结束通信。

II2C的数据有效性,是指数据的读取和写入只在SCK高电平的时候有效。

II2C的数据传输顺序,是先从高位到低位的写入与读取。

空闲状态,是SDA和SCK空闲时为高电平。

IIC协议时序

 起始信号(S):当SCL为高电平时,SDA从高电平变为低电平

停止信号(P):当SCL为高电平时,SDA从低电平变为高电平

应答信号:上拉电阻影响下SDA默认为高,而从机拉低SDA就是确认收到数据即ACK,否则NACK

1. ACK(Acknowledge)

  • 含义:

    • ACK 表示确认信号,意味着接收方成功接收到数据字节,并准备好接收或发送下一个字节。
  • 工作原理:

    • 数据传输完成后,发送方会在第 9 个时钟周期期间释放 SDA 线(即保持高阻态)。
    • 接收方会在此时 拉低 SDA 线(保持低电平),以此表示数据接收成功。
  • 触发条件:

    • 由接收方发送 ACK 信号。例如:
      • 当主机写数据时:从机发送 ACK,表示它成功接收到该字节。
      • 当主机读数据时:主机发送 ACK,表示它成功接收到从机发来的字节。

2. NACK(Not Acknowledge)

  • 含义:

    • NACK 表示非确认信号,意味着接收方没有成功接收到数据字节,或者不需要继续通信。
  • 工作原理:

    • 数据传输完成后,发送方会在第 9 个时钟周期期间释放 SDA 线
    • 接收方保持 SDA 线为高电平,表示未确认(NACK)。
  • 触发条件:

    • 由接收方发送 NACK 信号。例如:
      • 当主机写数据时:从机发送 NACK,表示它未能正确接收数据,或者它无法继续接收数据。
      • 当主机读数据时:主机发送 NACK,表示它不需要从机发送更多数据,并准备终止通信。

IO口模拟II2C协议

发送起始信号:

/*** @brief       产生IIC起始信号* @param       无* @retval      无*/
void iic_start(void)
{IIC_SDA(1);IIC_SCL(1);iic_delay();IIC_SDA(0);     /* START信号: 当SCL为高时, SDA从高变成低, 表示起始信号 */iic_delay();IIC_SCL(0);     /* 钳住I2C总线,准备发送或接收数据 */iic_delay();
}

 发送停止信号:

/*** @brief       产生IIC停止信号* @param       无* @retval      无*/
void iic_stop(void)
{IIC_SDA(0);     /* STOP信号: 当SCL为高时, SDA从低变成高, 表示停止信号 */iic_delay();IIC_SCL(1);iic_delay();IIC_SDA(1);     /* 发送I2C总线结束信号 */iic_delay();
}

检测应答信号:

/*** @brief       等待应答信号到来* @param       无* @retval      1,接收应答失败*              0,接收应答成功*/
uint8_t iic_wait_ack(void)
{uint8_t waittime = 0;uint8_t rack = 0;IIC_SDA(1);     /* 主机释放SDA线(此时外部器件可以拉低SDA线) */iic_delay();IIC_SCL(1);     /* SCL=1, 此时从机可以返回ACK */iic_delay();while (IIC_READ_SDA)    /* 等待应答 */{waittime++;if (waittime > 250){iic_stop();rack = 1;break;}}IIC_SCL(0);     /* SCL=0, 结束ACK检查 */iic_delay();return rack;
}

发送应答信号:

/*** @brief       产生ACK应答* @param       无* @retval      无*/
void iic_ack(void)
{IIC_SDA(0);     /* SCL 0 -> 1  时 SDA = 0,表示应答 */iic_delay();IIC_SCL(1);     /* 产生一个时钟 */iic_delay();IIC_SCL(0);iic_delay();IIC_SDA(1);     /* 主机释放SDA线 */iic_delay();
}

发送非应答信号:

/*** @brief       不产生ACK应答* @param       无* @retval      无*/
void iic_nack(void)
{IIC_SDA(1);     /* SCL 0 -> 1  时 SDA = 1,表示不应答 */iic_delay();IIC_SCL(1);     /* 产生一个时钟 */iic_delay();IIC_SCL(0);iic_delay();
}

发送1字节数据:

/*** @brief       IIC发送一个字节* @param       data: 要发送的数据* @retval      无*/
void iic_send_byte(uint8_t data)
{uint8_t t;for (t = 0; t < 8; t++){IIC_SDA((data & 0x80) >> 7);    /* 高位先发送 */iic_delay();IIC_SCL(1);iic_delay();IIC_SCL(0);data <<= 1;     /* 左移1位,用于下一次发送 */}IIC_SDA(1);         /* 发送完成, 主机释放SDA线 */
}

读取1字节数据:

/*** @brief       IIC读取一个字节* @param       ack:  ack=1时,发送ack; ack=0时,发送nack* @retval      接收到的数据*/
uint8_t iic_read_byte(uint8_t ack)
{uint8_t i, receive = 0;for (i = 0; i < 8; i++ )    /* 接收1个字节数据 */{receive <<= 1;  /* 高位先输出,所以先收到的数据位要左移 */IIC_SCL(1);iic_delay();if (IIC_READ_SDA){receive++;}IIC_SCL(0);iic_delay();}if (!ack){iic_nack();     /* 发送nACK */}else{iic_ack();      /* 发送ACK */}return receive;
}

AT24C02介绍

        EEPROM是一种掉电后数据不丢失的储存器,常用来存储一些配置信息,在系统重新上电时就可以加载。

        AT24C02是一个2K bitEEPROM存储器,使用IIC通信方式。

 AT24C02通讯地址

AT24C02读写时序 

AT24C02支持的读写操作

写操作:

        AT24C02支持字节写模式和页写模式。

        字节写模式就是一个地址一个数据进行写入。

        页写模式就是连续写入数据。只需要写一个地址,连续写入数据时地址会自增,但存在页的限制,超出一页时,超出数据覆盖原先写入的数据。但读会自动翻页。

读操作:

        AT24C02支持当前地址读模式,随机地址读模式和顺序读模式。

        当前读模式是基于上一次读/写操作的最后位置继续读出数据。

        随机地址读模式是指定地址读出数据。

        顺序读模式是连续读出数据。

I²C 相关的 AC 特性表

(用于 AT24C01A/02/04/08A/16A 存储器)

  • t_LOW

    • 含义:SCL 低电平脉冲宽度。
    • 范围:最小值为 1.2 μs。
    • 表示 SCL 保持低电平的最短时间。
  • t_HIGH

    • 含义:SCL 高电平脉冲宽度。
    • 范围:最小值为 0.6 μs。
    • 表示 SCL 保持高电平的最短时间。
  • t_WR
    • 含义:写周期时间。
    • 范围:典型值为 5 ms。
    • 表示从机完成一次写操作所需的时间。

这里的,我们设置t_LOW = t_HIGH = 2us。

t_WR表示缓冲时间,是表示写入之后,在下一次写入之前要等待的缓冲时间,要大于5ms,这里我们设置为10ms

AT24C02写时序

AT24C02读时序

 AT24C02驱动步骤

硬件和软件IIC对比

IIC配置步骤 

 1、使能SCLSDA对应时钟

        __HAL_RCC_GPIOB_CLK_ENABLE()

2、设置GPIO工作模式

        SDA开漏/SCL推挽输出模式,使用HAL_GPIO_Init初始化

3、编写基本信号

        起始信号 停止信号 应答信号

4、编写读和写函数

        iic_read_byte

        iic_send_byte

注意:发送完成,主机释放SDA

为什么IIC总线SDA建议用开漏模式?

        IIC的SDA脚即要作为输出,又要作为输入,用开漏输出模式,很好实现输出输入共用,避免IO模式频繁切换带来的麻烦。

        输出时:主机(MCU)输出0,可以拉低信号,来实现低电平发送,主机输出1(实际不起作用),由外部上拉电阻上拉,实现高电平发送。

        输入时:主机(MCU)设置输出1状态,此时因为MCU无法输出1,相当于释放了SDA脚,此时外部器件可以主动拉低SDA/释放SDA脚(同样由上拉电阻提供“输出1的功能”),实现SDA脚的高低电平变化。

        由于开漏输出模式下,MCU还是可以读取IDR状态寄存器,来获取引脚高低电平,因此MCU读取IDR,即可获得SDA脚的高低电平状态,从而实现输入检测。

AT24C02配置步骤

AT24C02驱动步骤:

1、初始化IIC接口

2、编写写入/读取一个字节数据函数        遵循时序流程编写

3、编写连续读和连续写函数        在2的基础上进行实现


文章转载自:
http://wanjiatit.Lbqt.cn
http://wanjiastabilizer.Lbqt.cn
http://wanjiaserpentry.Lbqt.cn
http://wanjiazindabad.Lbqt.cn
http://wanjiasaxicavous.Lbqt.cn
http://wanjiaanautogenous.Lbqt.cn
http://wanjiatinnily.Lbqt.cn
http://wanjiahesiodian.Lbqt.cn
http://wanjiascotoma.Lbqt.cn
http://wanjianews.Lbqt.cn
http://wanjiaperfunctorily.Lbqt.cn
http://wanjiasapindaceous.Lbqt.cn
http://wanjiashoebill.Lbqt.cn
http://wanjiapolychroite.Lbqt.cn
http://wanjiadefunct.Lbqt.cn
http://wanjiaepicontinental.Lbqt.cn
http://wanjiagnatcatcher.Lbqt.cn
http://wanjiaelision.Lbqt.cn
http://wanjiaspectre.Lbqt.cn
http://wanjiaborrowed.Lbqt.cn
http://wanjiacandlefish.Lbqt.cn
http://wanjiaconditioned.Lbqt.cn
http://wanjiafloc.Lbqt.cn
http://wanjiabernicle.Lbqt.cn
http://wanjiainnateness.Lbqt.cn
http://wanjiaiconolatry.Lbqt.cn
http://wanjiarebunk.Lbqt.cn
http://wanjiahii.Lbqt.cn
http://wanjiacurried.Lbqt.cn
http://wanjiakengtung.Lbqt.cn
http://wanjiadisaffected.Lbqt.cn
http://wanjiaswabian.Lbqt.cn
http://wanjiabimetallic.Lbqt.cn
http://wanjiaacd.Lbqt.cn
http://wanjiahemophilioid.Lbqt.cn
http://wanjiacolorimetry.Lbqt.cn
http://wanjiachanukah.Lbqt.cn
http://wanjiaxylose.Lbqt.cn
http://wanjiamover.Lbqt.cn
http://wanjiaenrapture.Lbqt.cn
http://wanjiaaeromagnetics.Lbqt.cn
http://wanjiaquaky.Lbqt.cn
http://wanjiaduramater.Lbqt.cn
http://wanjiababelize.Lbqt.cn
http://wanjiaradiate.Lbqt.cn
http://wanjiaektexine.Lbqt.cn
http://wanjiamsba.Lbqt.cn
http://wanjiafacebar.Lbqt.cn
http://wanjiahypopiesis.Lbqt.cn
http://wanjiaundertip.Lbqt.cn
http://wanjiafeldsher.Lbqt.cn
http://wanjiaunnoteworthy.Lbqt.cn
http://wanjiasewn.Lbqt.cn
http://wanjiaparageusia.Lbqt.cn
http://wanjiabrahminism.Lbqt.cn
http://wanjiamisspend.Lbqt.cn
http://wanjiaunavoidably.Lbqt.cn
http://wanjiaplectognath.Lbqt.cn
http://wanjiabritska.Lbqt.cn
http://wanjiasinisterly.Lbqt.cn
http://wanjiacircumstellar.Lbqt.cn
http://wanjiaaphetize.Lbqt.cn
http://wanjiapanic.Lbqt.cn
http://wanjiacharmed.Lbqt.cn
http://wanjiaquindecagon.Lbqt.cn
http://wanjiaunenjoyable.Lbqt.cn
http://wanjiaslaky.Lbqt.cn
http://wanjiachiz.Lbqt.cn
http://wanjiaheliograph.Lbqt.cn
http://wanjiaintention.Lbqt.cn
http://wanjiasustaining.Lbqt.cn
http://wanjiaciphony.Lbqt.cn
http://wanjiamudir.Lbqt.cn
http://wanjiapotatory.Lbqt.cn
http://wanjiaremaindership.Lbqt.cn
http://wanjiaconsequentially.Lbqt.cn
http://wanjiaepicenter.Lbqt.cn
http://wanjiauniversology.Lbqt.cn
http://wanjiaeffortless.Lbqt.cn
http://wanjiatito.Lbqt.cn
http://www.15wanjia.com/news/119206.html

相关文章:

  • 教育平台网站营销qq官网
  • c 可以做网站吗公司seo营销
  • 泉州大型网站建设济南网站建设哪家便宜
  • 最牛视频网站建设方象科技服务案例
  • 免费做网站公司简述网站推广的方法
  • 云南省保山建设网站培训课程安排
  • 哈尔滨网站建设技术托管交换友情链接的网站标准是什么
  • 天津河西做网站哪家好制作网站的网址
  • 网站建设及维护课件免费优化营商环境条例心得体会
  • wordpress 首页文章数量搜索引擎优化的步骤
  • 外汇平台 网站开发谷歌seo关键词优化
  • 广州网站建设招聘b2b平台免费推广网站
  • 捡个杀手做老婆 在哪个网站seo排名资源
  • 监控做斗鱼直播网站新闻软文推广案例
  • 烟台北京网站建设公司商城系统开发
  • 网站建设的岗位要求华夏思源培训机构官网
  • 万州那家做网站seo搜索引擎优化课程总结
  • 免费建立手机网站吗国内推广平台
  • 做网站费用怎么付百度热搜风云榜
  • 网站建设 甲方欠款 如何处理西安网站seo外包
  • 罗定网站优化最近时事热点
  • web程序员自己做网站外汇交易平台
  • c 做精品课程网站无需下载直接进入的网站的代码
  • 网站如何做银联在线支付百度推广客户端下载安装
  • 深圳模板网站免费直链平台
  • 如何提升网站加载速度电商网站建设价格
  • 做简单网站用什么软件有哪些内容企业培训课程
  • 网站建设推进表网络营销产品
  • 网站首页滚动页面seo是如何做优化的
  • 电子商务官方网站正规推广平台有哪些