OpenEdv-开源电子网

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

BS8116A触摸按键读不出键值

[复制链接]

45

主题

267

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2018-6-24
在线时间
156 小时
发表于 2022-6-24 11:31:52 | 显示全部楼层 |阅读模式
1金钱
按这个数据发送结构,读取按键值,按键后读出的都是一样的数据。
u16 BS8116A_ReadOneByte(void){                          
        u8 high=0,low=0;
        u16 key_value=0;
       
        IIC_Start();  
        IIC_Send_Byte(0XA0);          
        IIC_Wait_Ack();
        IIC_Send_Byte(0x08);
        IIC_Wait_Ack();
        IIC_Start();
        IIC_Send_Byte(0XA1);
        IIC_Wait_Ack();       
        low=IIC_Read_Byte(1);
        high=IIC_Read_Byte(0);
        IIC_Stop();          
        key_value=(high<<8)|low;                  

        return key_value;
}

搞不懂到底那里不对?请有用过的高手们指点迷境

bs8116a.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

45

主题

267

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2018-6-24
在线时间
156 小时
 楼主| 发表于 2022-6-24 14:24:56 | 显示全部楼层
原子程序:
        u8 ucErrTime=0;
        SDA_IN();      //SDA设置为输入
        IIC_SDA=1;delay_us(1);          
        IIC_SCL=1;delay_us(1);         
        while(READ_SDA)
各位同好,以前从没想过这个,现在发现这里感觉不理解了:既然已经设置成sda_in,上拉输入,等待外围给它拉低。可接下来IIC_SDA=1,这是输出上拉还是推挽高?
回复

使用道具 举报

45

主题

267

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2018-6-24
在线时间
156 小时
 楼主| 发表于 2022-6-24 14:27:14 | 显示全部楼层
#define IIC_SCL    PCout(12) //SCL
#define IIC_SDA    PCout(11) //SDA         
#define READ_SDA   PCin(11)
先PCin,又随时可以PCout。这里搞不懂了
回复

使用道具 举报

45

主题

267

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2018-6-24
在线时间
156 小时
 楼主| 发表于 2022-6-24 14:46:27 | 显示全部楼层
按一次按键后串口发出的消息:
recive ACK!
recive ACK!
value:0x2032
recive ACK!
recive ACK!
recive ACK!
value:0x2032
recive ACK!
recive ACK!
recive ACK!
value:0x2032
recive ACK!
recive ACK!
recive ACK!
value:0x2032

不论原子的基础代码了。我想我的应用代码应该是没有问题,的确收到了8116的回应,它最后也返回我一个数据,只是不会变动的数据。难道这个芯片还得像LCD那样做个寄存器初始化?
回复

使用道具 举报

2

主题

369

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4241
金钱
4241
注册时间
2020-7-24
在线时间
714 小时
发表于 2022-6-24 15:04:25 | 显示全部楼层
帮顶  
回复

使用道具 举报

1

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1023
金钱
1023
注册时间
2019-9-21
在线时间
269 小时
发表于 2022-6-24 15:37:09 | 显示全部楼层
帮顶一下
回复

使用道具 举报

45

主题

267

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2018-6-24
在线时间
156 小时
 楼主| 发表于 2022-6-24 15:54:04 | 显示全部楼层
谢谢帮顶。可是都错了,。我读的是at24c02里的值,这颗芯片彻底没用起来
回复

使用道具 举报

11

主题

2141

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4847
金钱
4847
注册时间
2015-1-10
在线时间
607 小时
发表于 2022-6-24 18:37:56 | 显示全部楼层
协议是标准的IIC,从地址没写对?
回复

使用道具 举报

45

主题

267

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2018-6-24
在线时间
156 小时
 楼主| 发表于 2022-6-24 22:49:26 | 显示全部楼层
设备地址是0x50,我看论坛有人搞过,要从B0开始写入22个和checksum,芯片才能工作,就是说要做初始化。写啥数据,checksum怎么来,不得而知。难了
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2022-6-25 20:08:29 | 显示全部楼层
wdmvw 发表于 2022-6-24 14:24
原子程序:
        u8 ucErrTime=0;
        SDA_IN();      //SDA设置为输入

SDA_IN();      //SDA设置为输入,然后IIC_SDA=1是设置上拉为高电平。配置引脚为输入上拉高电平,一点问题没有。
回复

使用道具 举报

45

主题

267

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2018-6-24
在线时间
156 小时
 楼主| 发表于 2022-6-27 10:16:59 | 显示全部楼层
芯片可以读出数据了,电路板丝印搞反了
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2021-10-29
在线时间
16 小时
发表于 2022-7-22 18:14:42 | 显示全部楼层
本帖最后由 wangmingxunok 于 2022-7-22 18:33 编辑

楼主你好!最近我也在用合泰的8116A芯片,可以参考一下你的测试程序么?提前感谢  1679591633@qq.com
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-7-23 10:47:53 | 显示全部楼层
帮顶  
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-26 18:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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