硬件环境:XNUCLEO开发板(STM32F411RCT6芯片)、MiniSTM32 V3.41开发板(STM32F103RCT6芯片)

软件环境:IAR for ARM 8.30.1、Keil5

现将工程代码附上:

stm32f1xx链接:https://download.csdn.net/download/u011727389/10935701

stm32f4xx链接:https://download.csdn.net/download/u011727389/10935673

下面介绍我做的几个实验:

一、软件模拟i2c实验

1、在ministm32开发板软件模拟i2c协议读写at24c02没有问题,也就是正点原子官方给的例子

2、分为下面两个步骤

a)在ministm32开发板,用开发板PB0、PB1分别接at24c256模块的SCL、SDA引脚,at24c256模块的VCC、GND接开发板的BOOT模块的3.3V、GND

b)将正点原子i2c实验的程序中EE_TYPE改成AT24C256,发现逻辑分析仪还是抓不到波形,按道理软件GPIO模拟i2c时序,比如,对于读操作,先要一个起始信号,发送从设备地址,发送需要读eeprom的地址,再接收需要读的数据(此时GPIO为输入模式),再发送停止信号。GPIO上的对应端口是有电压变化的,是应该可以抓到波形的,但却没抓到,那就应该分析GPIO端口配置是否有问题,对于stm32f1xx看寄存器GPIOX_CRL、GPIOX_CRH、AFIO。由于stm32f1xx有5组GPIO(A- E),每组16个端口(PX0-PX15),所以会有高低两个寄存器来配置这16个端口的上下拉。输入输出模式;对于AFIO,由于AFIO默认值是0,故如果选择的是使用默认复用端口,则不用配置,下面会介绍。

对照上图所示正确配置后(如果使用i2c1的PB6/7端口的话则不需要配置AFIO_MARP,因为默认值是0)stm32f1xx的i2c读 写功能正常了。

对于stm32f4xx需要看GPIOX_MODER、GPIOX_PUPDR、GPIOX_AFRL、GPIOX_AFRH,把这几个寄存器配置正确,i2c读写也正常了。

二、使用i2c控制器

1、在ministm32开发板用st公司的例子做修改(上面stm32f1xx链接),将其解压放在en.stm32cubef1 V1.7.0-》Projects-》STM32F103RB-Nucleo-》Examples-》I2C目录下,做实验发现可以读写,但逻辑分析仪抓到的读波形不正确。写波形的设备地址也不对。

at24c256的设备地址datasheet写的是MSB-》LSB:1 0 1 0 0 A1 A2 R/W,对于实验设置A1、A2为0,那么设备地址应该为0xA0,怎么会变成0x50,而0x50正好是右移一位的结果,这是想到了逻辑分析仪i2c设置的参数,选择了7-bit address bits only,所以抓出来是0x50,改过来就正确了,这个不影响抓到的数据。

对于读数据不对问题,仔细研读了软件模拟i2c时序,发现发送读写地址是一个16bit的数据,对照datasheet发现也是要求16bit地址,将8bit地址改成16bit地址之后发现写读数据比对通过。

2、在Xnueleo开发板用st公司的例子做修改(上面stm32f4xx链接),将其解压放在en.stm32cubef4 V1.23.0-》Projects-》STM32F411RE-Nucleo-》Examples_MIX-》I2C目录下,做实验发现可以读写,但逻辑分析仪抓不到波形,程序卡在了写完DR寄存器等待ADDR_FLAG上,都是官方例子改的,check double了代码没有问题,然后检查两个开发板之间和i2c通信模块at24c256的连接上,发现除了VCC有点差别其他无,这是重点在VCC上了一个是3.3v,一个是E5V,发现at24c256电压范围是2.7-5.5v,说明不是压值问题,然后仔细看Xncleo板子的E5V,将其连接到下载器的5v上,这肯定有电压,发现读写正常了,然后咨询并看了原理图,说明书发现E5V是外部电压,不是产生5v电压,真相终于大白,竟然是这么二的问题。。。这也提醒一定要仔细看手册。

关于STM32使用硬件i2c读写AT24C256实验遇到的问题相关推荐

  1. STM-32:I2C外设总线—硬件I2C读写MPU6050

    目录 一.I2C外设简介 二.I2C框图 三.I2C基本结构 四.主机发送 五.主机接收 六.I2C的中断请求 七.软件/硬件波形对比 八.应用实例:硬件I2C读写MPU6050 8.1接线图 8.2 ...

  2. STM32F10x_硬件I2C读写EEPROM(标准外设库版本)

    Ⅰ.写在前面 上一篇文章是"STM32F10x_模拟I2C读写EEPROM",讲述使用IO口模拟I2C总线通信,对EEPROM(AT24Xxx)进行读写操作的过程. 上一篇文章主要 ...

  3. STM32通信硬件 I2C

    20.1关于 I2C STM32F103系列的I²C控制器,可作为通信主机或从机,因此有四种工作模式可选择:主机发送模式.主机接收模式.从机发送模式.从机接收模式. 传输速度上,支持标准模式(Stan ...

  4. STM32单片机硬件I2C读取AHT10温湿度传感器数据

    STM32使用硬件IIC读取AHT10温湿度传感器的数据并显示在0.96寸OLED屏上. 我用的单片机是STM32F103C8T6,程序用的是ST标准库写的. STM32使用硬件I2C读取SHTC3温 ...

  5. STM32的硬件I2C与AT24C16

    刚学STM32的时候就听闻STM32的硬件I2C存在重大bug,会导致运行卡死在等待ACK的过程中,所以一直以来对其避而远之,转而以模拟I2C取代之.最近这段时间一直在用STM32 CubeMX,图形 ...

  6. STM32基于HAL工程硬件I2C读写AT24C02/04/08数据

    STM32基于HAL工程硬件I2C读取AT24C02数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!

  7. STM32CubeMX学习教程之十:硬件I2C读写AT24C02

    完整源码下载: https://github.com/simonliu009/STM32CubeMX-hardware-I2C-AT24C02 网上有流传已久一种说法,就是STM的I2C有bug,不好 ...

  8. STM32单片机硬件I2C驱动程序(查询方式)

    本文章原始地址:http://feotech.com/?p=69 本程序主要用于驱动STM32单片机芯片的硬件I2C寄存器,实现通过使用芯片自带的I2C寄存器进行数据的发送与接收. 本例程中采用I2C ...

  9. 关于 STM32 的硬件I2C

    首先转两个帖子 http://blog.csdn.net/mcu_hong/article/details/8149311 http://bbs.21ic.com/icview-184741-1-1. ...

最新文章

  1. Java 开发Log4j 详细使用教程
  2. Vivado级联Modelsim仿真Re-launch问题
  3. eeglab中文教程系列(11)-使用ICA分解数据
  4. std::get(std::tuple)
  5. java强引用、软引用、弱引用、虚引用-Java的引用类型总共有四种,你都知道吗
  6. WebStorm调试Electron
  7. 数据结构:二分查找python实现
  8. python 声明变量类型_每日一课 | Python 检查变量的类型
  9. N使用exus2打造企业maven仓库(三)
  10. aop框架 php,xaop: 支持三种模式的AOP框架,弥补PHPer的不足,并且自带了文档的解析类库,可以一并使用,性能极好,欢迎 STAR 与 FORK。...
  11. [转载]C#获取DLL的目录
  12. python 计算时间_python的时间使用和时间计算
  13. P3223 [HNOI2012]排队
  14. 蛋白序列GO号注释及问题
  15. jsp购物车(session版)
  16. 数据库如何避免读取脏数据?
  17. 基于51单片机交通灯控制器(东西通行_南北通行_按键启动)
  18. Leetcode笔记 每日一题 824. 山羊拉丁文 (22.04.21)
  19. winpe linux系统安装win7,WINPE+LINUX+DOS 完美者U盘维护系统V8.6 及安装方法
  20. MDaemon功能篇之优先级邮件

热门文章

  1. LiveVideoStackCon 2022 上海站优秀出品人、讲师及志愿者
  2. Centos7安装Nethogs网络监控软件
  3. 「CSP-S模拟赛」2019第四场
  4. 如何用机器人监听老板微信?
  5. 怎么查看计算机里隐藏的文件夹,怎么查看隐藏文件,教您怎么查看隐藏文件
  6. python实现文本读写功能
  7. 单链表 插入操作 和 删除操作 的易错点
  8. 【马红“名师+”】送教互研共提升 有效课堂我先行(送教送培第二站)
  9. pydicom数据的处理
  10. java设计模式 课后习题参考答案 第 2 章 面向对象设计原则 清华出版社 刘伟