OpenEdv-开源电子网

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

IIC读写函数读出数据错误,且响应函数一直返回1

[复制链接]

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2015-6-1
在线时间
21 小时
发表于 2015-6-1 21:41:40 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]#define HSHCAL_CTL1 0x1B //控制工作模式寄存器地址 #define HSHCAL_SADRW (0x18<<1 & 0xFE) //写从机地址 #define HSHCAL_SADRR (0x18<<1 | 0x01) //读从机地址 //读一个字节函数 u8 HSHCAL_ReadOneByte(u8 ReadAddr) { [/mw_shl_code] [mw_shl_code=c,true]          u8 temp=0,m=2; [/mw_shl_code] [mw_shl_code=c,true] IIC_Start();      IIC_Send_Byte(HSHCAL_SADRW); m=IIC_Wait_Ack(); LCD_ShowNum(90,30,m,2,16); IIC_Send_Byte(ReadAddr); m=IIC_Wait_Ack(); LCD_ShowNum(90,50,m,2,16); IIC_Start(); IIC_Send_Byte(HSHCAL_SADRR); m=IIC_Wait_Ack(); LCD_ShowNum(90,70,m,2,16); temp=IIC_Read_Byte(0); IIC_Stop();//?ú?ú???????????? return temp; } //写一个字节函数 void HSHCAL_WriteOneByte(u16 WriteAddr,u8 DataToWrite) { IIC_Start(); IIC_Send_Byte(HSHCAL_SADRW); IIC_Wait_Ack(); IIC_Send_Byte(WriteAddr); IIC_Wait_Ack(); IIC_Send_Byte(DataToWrite); IIC_Wait_Ack(); IIC_Stop(); delay_ms(10); } void Hshcal_SensorInit() //Init sensor { //0111 0000 High accuracy 10Hz Normal state HSHCAL_WriteOneByte(HSHCAL_CTL1,0x70); delay_ms(20); } [/mw_shl_code]
int main(void)

       u8 key;
        NVIC_Configuration();
         delay_init();        
         uart_init(9600); 
         LED_Init();     
         LCD_Init(); 
         KEY_Init(); 
        IIC_Init();
        Hshcal_SensorInit();
          key=HSHCAL_ReadOneByte(0X0E);
        LCD_ShowNum(90,10,key,2,16); 
}
上面的代码读传感器数据总是错误的,不管传什么地址,返回的数据都是一样的且结果一直不变,检查发现 [mw_shl_code=c,true]m=IIC_Wait_Ack();返回的结果一直都是1,我检查了硬件,连接没发现问题,请问这是什么原因导致的,代码有问题吗?纠结中求解答。[/mw_shl_code]
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-6-1 22:12:36 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-6-1 22:34:46 | 显示全部楼层
延时时间够不够
回复

使用道具 举报

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2015-6-1
在线时间
21 小时
 楼主| 发表于 2015-6-2 09:51:55 | 显示全部楼层
调用的每个函数后面都delay_ms(100);还是不行,延时应该是够的,很纠结,继续求解答呀!!!读寄存器地址显示的得数都是255.
回复

使用道具 举报

6

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-10-21
在线时间
7 小时
发表于 2016-2-2 18:08:36 | 显示全部楼层
lewuyou 发表于 2015-6-2 09:51
调用的每个函数后面都delay_ms(100);还是不行,延时应该是够的,很纠结,继续求解答呀!!!读寄存器地址显 ...

我现在和你一样的问题,请问你现在解决了没有?
爱电子,爱科技,爱新技术
回复

使用道具 举报

12

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2011-7-24
在线时间
37 小时
发表于 2016-2-2 19:27:29 | 显示全部楼层
用逻辑分析仪 夹一下看看!
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2016-1-25
在线时间
1 小时
发表于 2016-3-5 15:33:25 | 显示全部楼层
lewuyou 发表于 2015-6-2 09:51
调用的每个函数后面都delay_ms(100);还是不行,延时应该是够的,很纠结,继续求解答呀!!!读寄存器地址显 ...

请问  你现在解决这个问题了吗 怎么解决的
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2020-6-13
在线时间
8 小时
发表于 2020-6-17 13:01:03 | 显示全部楼层
楼主如何解决的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 06:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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