| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 基于STM8L系列单片机驱动BS818A-2触摸按键(串行输出源码) -> 正文阅读 |
|
[嵌入式]基于STM8L系列单片机驱动BS818A-2触摸按键(串行输出源码) |
? ? 一、BS81X系列芯片简介??
??BS81x 系列芯片具有
2~16
个触摸按键, 可用来检测外部触摸按键上人手的触摸动 作。该系列的芯片具有较高的集成度,仅 需极少的外部组件便可实现触摸按键的检 测。
????????BS81x 系列提供了串行及并行输出功能, 可方便与外部 MCU
之间的通讯,实现设 备安装及触摸引脚监测目的。芯片内部采 用特殊的集成电路,具有高电源电压抑制 比,可减少按键检测错误的发生,此特性 保证在不利环境条件的应用中芯片仍具有 很高的可靠性。
????????此系列的触摸芯片具有自动校准功能,低 待机电流,抗电压波动等特性,为各种触 摸按键的应用提供了一种简单而又有效的 实现方法。
????????该系列芯片特性大多都相同,BS8112A-3/BS8116A-3
具有
IIC
功能,
BS814A-2/BS818A-2
具
SPI
串 口 功 能,
BS812A-1/BS813A-1/BS814A-1/BS816A-1
具 并 行 输 出 功 能。 同 时
BS8112A-3/BS8116A-3
可通过
IIC
设置
Option
和感度,
BS816A-1/BS818A-2
则提供两个硬
件
Option
,增加应用上的弹性。
二、BS818A-2应用
2.1 BS818A-2触摸芯片的工作原理
????????BS814A-2 和
BS818A-2
配 备 有 一 个 串 行 接口,允许与外部设备进行简单的通讯。 当触摸芯片侦测到触摸键被按下时,会在 Data 脚输出低电位,可唤醒主机,主机在 接收到低电位后,由 Clock
脚输出时钟信 号,并从 Data
脚回读按键值。 当在 Clock
脚输入低电位时,触摸芯片准
备数据,
Clock
脚送出高电位后,主机从 Data 线读取数据。每次读取数据以
8
个时 钟信号一组。也可用轮询的方式直接读取 键值,不必等待 Start
位。 当数据读取错误时,需等 6ms
左右
,
才能
再重新读取一次。
8-key
数据结构
当
Clock
引脚接收到时钟信号,触摸芯片将会产生一个
16
位的数据字节,并从
Data
引脚
移出。其中
Bit11~Bit8
产生校验和,用来表示被触摸按键的总数。例如校验和为“
0010
”,
这意味着有两个键被触摸。至于是哪个按键被触摸,可以查看
Bit7~Bit0
位状态。
Bit7~Bit0
用于指示相应的触摸按键
Key8~Key1
是否被触摸。若为零则表明相应的按键被触摸,若为
1
,则表明相应按键未被触摸。
Start bit
:当按键状态改变时
,
由
Data
脚送出低电位,唤醒主机,主机读取键值
Bit0
:
Key1
状态
(0=
按键,
1=
松键
)
Bit1
:
Key2
状态
(0=
按键,
1=
松键
)
Bit2
:
Key3
状态
(0=
按键,
1=
松键
)
Bit3
:
Key4
状态
(0=
按键,
1=
松键
)
Bit4
:
Key5
状态
(0=
按键,
1=
松键
)
Bit5
:
Key6
状态
(0=
按键,
1=
松键
)
Bit6
:
Key7
状态
(0=
按键,
1=
松键
)
Bit7
:
Key8
状态
(0=
按键,
1=
松键
)
Bit11~8
:核对总数
--
“
0
”的总数
,
即被触摸按键的总数。
Bit15~Bit12
:停止位,永远为 “
1010B
”
?三 、STM8L系列单片机驱动BS818A-2触摸芯片(串行输出源码) //********************************************************************************** #ifndef __API_BS818A_H #define SDA_PORT ?GPIOC ? ? //SDA #define SCL_PORT ? GPIOC? ? ?? void Bs818a_Init(void); //********************************************************************************** #include "api_bs818a.h" u16 Key_Value; //********************************************************************************** //********************************************************************************** ?????????????????if(i<8)TouchNum++;? ?//客户如果用到了按键计数,这句需要加 ? ? ? ? // 下面这段根据需要添加,我只用Key_Value,所以这一段我没有用,直接返回Key_Vakue if(((Key_Value & 0x0F00) == 0x0800) && TouchNum == 8) {_LED = 1;KEY_DATA = ????????(read_data&0xFF) ^ 0xFF;} // 到这为止 //下面两个延时根据使用的时钟决定,我使用了HSI(内部高速时钟) void Delay_us(uint16_t cnt) ?? ?while(cnt--) void Delay_ms(uint16_t cnt) ?? ?while(cnt--) |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:52:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |