OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6622|回复: 4

求助:使用STM32F7的HAL库函数来完成硬件IIC对某个从设备的读访问

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-2-28
在线时间
3 小时
发表于 2018-3-8 11:06:16 | 显示全部楼层 |阅读模式
15金钱
最终目的:利用STM32硬件IIC实现对某一从设备的读访问
      (PS:最好是玩过F7系列板子的人,因为F7的IIC的库函数和之前F4的不一样,当然如果是大神,还请不吝赐教
具体要求:
       1、使用F7系列(比如我的板子是F767ZI)自带的硬件IIC,而非模拟IIC
       2、最好使用F7自带的官方库函数
       3、根据读从设备IIC的时序要求(具体就是:F767发START信号,发从设备地址+写信号,收到ACK,再发从设备里具体寄存器的地址,收到ACK,然后重发START信号给从设备,再发              从设备地址+读信号,收到ACK,然后开始读从设备里具体寄存器传过来的数据,发出ACK和STOP信号)(从设备的写地址是0X34,读地址是0X35;具体寄存器的地址是0X02,读的数            据分为只读1字节和读65字节两种)
目前遇到的问题:
      由于F7库的硬件IIC库的函数和F4系列的硬件IIC的库函数不一样,F7库函数硬件IIC里面没有generate_start,generate_stop等分立的某一个小阶段的函数,它直接是给出的封装好的一整个的读写函数,然后通过IIC里的寄存器的某些位发生变化,由硬件控制发出START  STOP等信号;比如(F7HAL库IIC的一些函数:HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)、HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)等等),我没有办法在发完寄存器地址后,跳过STOP信号,直接发RESTART信号开始读访问;我的源程序如下:
      //IIC从HTPA读一个字节
      //reg:寄存器地址
      //返回值:读到的数据
      unsigned char HTPA_ReadOneByte(unsigned char reg)
      {
          unsigned char res;
          unsigned char temp1=HAL_I2C_Master_Transmit(&hi2c2, HTPA_ADDR|0X00, &reg,1, 1000);//器件地址+写地址  寄存器地址
          unsigned char temp2=HAL_I2C_Master_Receive(&hi2c2, HTPA_ADDR|0X01, &res,1, 1000);//器件地址+读地址   接收到的数据
          return res;
       }
//这样出现的问题就是,我写完成后,硬件会自动发STOP信号,然后再进行读操作。
通过抓取波形,发现写成功了(从设备会回给你ACK),但是读的时候,当我把器件地址+读地址发过去时,STM32F7会收到一个NACK,无法读取寄存器里的数据
附件里是读的时序图要求

(金币虽然不是很多,但已经是我一个萌新的所有金币,希望所有路过的大神,能多看一眼,帮我解决一下这个问题
1.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-2-28
在线时间
3 小时
 楼主| 发表于 2018-3-8 11:06:17 | 显示全部楼层
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2018-6-6
在线时间
33 小时
发表于 2018-6-7 08:54:55 | 显示全部楼层
楼主,把源码放出来嘛  分享一下。
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-8-10
在线时间
5 小时
发表于 2019-8-27 09:46:47 | 显示全部楼层
不分享
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-12-6
在线时间
3 小时
发表于 2019-12-6 16:46:20 | 显示全部楼层
咋解决的啊~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 12:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表