OpenEdv-开源电子网

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

求助,同样的程序进行模拟IIC通信,使用不同引脚读数结果不同

[复制链接]

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-6-23
在线时间
4 小时
发表于 2021-6-23 20:34:08 | 显示全部楼层 |阅读模式
1金钱
使用不同的引脚,结果一个带小数点,一个是整数

微信截图_20210623203105.png
微信截图_20210623202928.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8643
金钱
8643
注册时间
2020-5-11
在线时间
4098 小时
发表于 2021-6-24 11:09:29 | 显示全部楼层
看着差不多啊,是测温吗,也许刚好就是那个温度呢,用手摸或哈口气看温度变不变。
专治疑难杂症
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-6-23
在线时间
4 小时
 楼主| 发表于 2021-6-24 11:29:22 | 显示全部楼层
LcwSwust 发表于 2021-6-24 11:09
看着差不多啊,是测温吗,也许刚好就是那个温度呢,用手摸或哈口气看温度变不变。

是测温度,但是有两个一直回整数,我试了把传感器互换还试了修改引脚还是只有PE10 11接出来的传感器读出是带小数点的,程序都是一样的
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-6-23
在线时间
4 小时
 楼主| 发表于 2021-6-24 11:31:58 | 显示全部楼层
不是正好的28度,我改变温度他还是这样
微信截图_20210624112410.png
微信截图_20210624112259.png
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8643
金钱
8643
注册时间
2020-5-11
在线时间
4098 小时
发表于 2021-6-24 11:34:15 | 显示全部楼层
milanmilan 发表于 2021-6-24 11:29
是测温度,但是有两个一直回整数,我试了把传感器互换还试了修改引脚还是只有PE10 11接出来的传感器读出 ...

建议把值通过串口发出来看,不要用调试器。
专治疑难杂症
回复

使用道具 举报

17

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1312
金钱
1312
注册时间
2017-3-1
在线时间
259 小时
发表于 2021-6-24 11:35:16 | 显示全部楼层
milanmilan 发表于 2021-6-24 11:31
不是正好的28度,我改变温度他还是这样

值清掉,立即28?
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4891
金钱
4891
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-6-24 13:50:59 | 显示全部楼层
27.984375->41 DF E0 00
28             ->41 E0 00 00
要不用示波器看看时序?看看数据是不是真的整数还是你读的时候出问题了
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-6-23
在线时间
4 小时
 楼主| 发表于 2021-6-24 15:25:11 | 显示全部楼层
阿侑kevin 发表于 2021-6-24 13:50
27.984375->41 DF E0 00
28             ->41 E0 00 00
要不用示波器看看时序?看看数据是不是真的整数还 ...

float DOWNTMP_Get_Temperature(void)
{
   static  u8 downbuf[3];   
        float downtemp;
        downbuf[0]=Temp_Reg;
        DOWNTMP_Read_Len(TMP117_Address,Temp_Reg,2,downbuf);
  downtemp=((downbuf[0]<<8)|downbuf[1])*TMP117_RESOLUTION;      
    return downtemp;
}


buf[0]是0E,buf[1]有读数的最后出来是小数,没读数的出来时整数。
->后面的41 DF E0 00是怎么得来的,我太菜了,看不明白。

回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-6-23
在线时间
4 小时
 楼主| 发表于 2021-6-24 15:26:40 | 显示全部楼层
iic连续读用的原子哥的例程
u8 DOWNTMP_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{
        DOWNTMP_IIC_Start();
        DOWNTMP_IIC_Send_Byte((addr<<1)|0);//·¢&#203;í&#198;÷&#188;tμ&#216;&#214;·+D′&#195;üá&#238;       
        if(DOWNTMP_IIC_Wait_Ack())        //μè′yó|′e
        {
                DOWNTMP_IIC_Stop();                 
                return 1;               
        }
           DOWNTMP_IIC_Wait_Ack();                //μè′yó|?
    DOWNTMP_IIC_Send_Byte(reg);        //D′&#188;&#196;′&#230;&#198;÷μ&#216;&#214;·
    DOWNTMP_IIC_Wait_Ack();                //μè′yó|′e
    DOWNTMP_IIC_Start();
        DOWNTMP_IIC_Send_Byte((addr<<1)|1);//·¢&#203;í&#198;÷&#188;tμ&#216;&#214;·+&#182;á&#195;üá&#238;       
    DOWNTMP_IIC_Wait_Ack();                //μè′yó|′e
        while(len)
        {
                if(len==1)*buf=DOWNTMP_IIC_Read_Byte(0);//&#182;áêy&#190;Y,·¢&#203;ínACK
                else *buf=DOWNTMP_IIC_Read_Byte(1);                //&#182;áêy&#190;Y,·¢&#203;íACK  
                len--;
                buf++;
        }   
    DOWNTMP_IIC_Stop();        //2úéúò&#187;&#184;&#246;í£&#214;1ì&#245;&#188;t
        return 0;       
}
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-6-23
在线时间
4 小时
 楼主| 发表于 2021-6-24 15:29:39 | 显示全部楼层
NewGuard 发表于 2021-6-24 11:35
值清掉,立即28?

不是立即数,用的iic连续读,只有buf[0]有读数,buf[1]没有读数最后就算出整数
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4891
金钱
4891
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-6-24 15:57:34 | 显示全部楼层
本帖最后由 阿侑kevin 于 2021-6-24 16:00 编辑
milanmilan 发表于 2021-6-24 15:25
float DOWNTMP_Get_Temperature(void)
{
   static  u8 downbuf[3];   

把float转hex啊,你在debug的时候可以直接转,在watch窗口对你的监控变量右击就出来了,但你的应该是一个16bit然后乘系数算出来的,应该是读取的时候出问题了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-25 01:23:09 | 显示全部楼层
你这如果是传感器数据,那就是不定的值啊,什么数据都有可能。建议你直接给定数值试下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 02:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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