IIC通信从机无应答(读取数据始终为0XFF)

这篇具有很好参考价值的文章主要介绍了IIC通信从机无应答(读取数据始终为0XFF)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在做项目的时候遇到的问题,IIC通信时读取数据始终为0XFF

下面从写数据开始介绍

向从机写数据步骤为:

开始信号->发送从机地址->等待应答->发送寄存器地址->等待应答->写数据->等待应答->停止信号

等待应答时,若SDA为0则代表成功应答

iic读取的数据都是0xff,stm32

用示波器查看波形发现,在发送地址后SDA为高,无应答,说明未查询到从机

iic读取的数据都是0xff,stm32

而从机数据手册中地址为0x6D,我最开始出错的代码如下

 IIC_Write(0x6D,0x30,1,yali_ctrl);//在地址0x6D从机的0x30寄存器中写入yali_ctrl的指令

unsigned char IIC_Write(unsigned char addr, unsigned char reg, unsigned char len, unsigned char * data)  
{
      int i;
    IIC_Start(); 

    IIC_Send_Byte(addr | 0x00); 
    IIC_Wait_Ack();     

    IIC_Send_Byte(reg);        
    IIC_Wait_Ack();
    
    for (i = 0; i < len; i++) 
    {
        IIC_Send_Byte(data[i]);   
        IIC_Wait_Ack();
        
    }
    IIC_Stop();
    return 0;
}

最后发现,IIC通信中,发送完开始信号后,再发送的八位中,只有高七位是从机地址,最低位0、1代表读写

所以从机地址0x6D=0110_1101在我的写法中,最低为1代表了读写,实际发送的地址是0110110,所以无法检测到从机,所以把地址改为1101_101x,这样最低一位代表读写,高七位作为地址,便能访问到从机。

  IIC_Write(0xDA,0x30,1,yali_ctrl);文章来源地址https://www.toymoban.com/news/detail-575067.html

到了这里,关于IIC通信从机无应答(读取数据始终为0XFF)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通信协议详解(二):IIC总线协议(传输时序+数据格式+设计实现)

        IIC(Inter-Integrated Circuit)是一种具有两线传输的串行通信总线,使用多主从架构,由飞利浦公司在1980年为了让主板、嵌入式系统或手机连接低速周边设备而提出,适用于数据量不大且传输距离短的场合。     IIC串行总线由两根信号线组成,一根是双向的 数据线

    2024年02月04日
    浏览(54)
  • FPGA主SPI与STM32从机通信

    目录 概述 FPGA的SPI主机代码 STM32从机 SPI模式配置 SPI参数设置  SPI的DMA传输配置 STM32从机SPI接收代码         不说一些SPI原理之类的废话,浪费空间。我使用的硬件环境为STM32F407VET6和DE0-nano,长什么样子如下图。  使用cubemx配置工程,FPGA使用Quartus软件,时序仿真图如下    

    2024年02月02日
    浏览(42)
  • 【接口协议】FPGA实现IIC协议对EEPROM进行数据存储与读取(AT24C64)

    使用vivado实现IIC协议对EEPROM进行数据存储与读取。本文是基于正点原子的“达芬奇”开发板资料进行学习的笔记,对部分地方进行了修改,并进行了详细的讲解。 IIC(Inter-Integrated Circuit),即集成电路总线,是一种同步半双工串行总线,用于连接微控制器及外围设备,是用于数据

    2024年02月04日
    浏览(75)
  • 【SPI】STM32 SPI 双机通信,SPI从机模式使用

    最近要用到STM32的SPI从机模式,从其他板子读SPI数据过来,踩了2天坑,记录一下过程。 (因为hal库提供了三种函数,我调试的过程是阻塞、中断、DMA依次来调试学习的, 这份代码为使用DMA方式的代码。 ) 软件 :keil5、STM32CubeMX 硬件 :两块STM32F103C8T6最小系统 实现功能 :两

    2024年02月17日
    浏览(55)
  • TTL电平串口通信连接多个从机,二极管即可改造UART串口为一主多从总线 一对多通讯

    在重新翻阅了许多遍串口相关的书籍资料以后,(其实是看了485、232,modbus协议以后还是觉得再尝试尝试…) 改用以上连线后,通过串口助手发送数据测试… ** ** 虽然电路很简单,查阅了许多资料都建议使用RS485/232或者是改用SPI,CAN的通信,但是还是发个博记录一下吧。 关于连

    2024年02月11日
    浏览(36)
  • 详解通信协议之IIC通信协议

    本文结合AT24C02对IIC通信协议原理进行了描述。 IIC通讯协议(Inter-Integrated Circuit)是由 Philips 公司开发双向同步半双工串行总线,只需要两根线(SDA、SCL)即可在连接于总线上的器件之间传送信息。IIC总线是一种共享的串行总线,是用于两个设备之间的短距离低速速率(250K左右)通

    2024年02月08日
    浏览(38)
  • SMBus通信,与IIC通信的差异

    SMBus是System Management Bus的缩写,它是一种简单的串行通信总线,用于连接计算机上的系统管理芯片和其他设备,如电池、风扇、温度传感器等。SMBus是由英特尔公司开发的,它基于I2C总线协议,但是增加了一些额外的功能,如命令、控制和错误检测等。 SMBus使用两根线进行通信

    2024年02月08日
    浏览(52)
  • 【【IIC模块Verilog实现---用IIC协议从FPGA端读取E2PROM】】

    下面是 design 设计 下面是testbench 下面是注意事项 因为时钟的不同 我们先设计出本次时钟所需要的dri_clk 在配置完dri_clk 之后 我们需要做的是对整个I2C结构 进行状态机的 书写 建议 写成经典的三段状态机的形式 同步时序描述状态转移 组合逻辑判断状态转移条件 时序电路描述

    2024年02月03日
    浏览(53)
  • stm32 IIC通信

    IIC总线是一种通用数据总线,有两根通信线(SCL(串行时钟总线),SDA(串行数据总线))。 特点:同步,半双工,带数据应答,支持总线挂载多设备 所有IIC设备的SCL连在一起,SDA连在一起。 SCL与SDA均配置成开漏输出模式 SCL与SDA各添加一个上拉电阻,阻值一般为4.7千欧左右。

    2024年02月15日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包