IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32 PAJ7620U2手势识别模块(IIC通信)程序源码详解 -> 正文阅读

[嵌入式]STM32 PAJ7620U2手势识别模块(IIC通信)程序源码详解

????????最近在自学设计下基于STM32的项目,想用手势识别模块做一点好玩的,做个手势控制家居设备开关,另外正好借此巩固I2C 通信。
????????很多人刚刚接触I2C、SPI、CAN等通信方式时都会有一堆的问题:为什么要学它?学它可以做什么?我该怎么去学习它呢?

? ? ? ? 因此,我想借这个机会在这里和大家分享一下自己学习时的所思所感吧,若有表述不对之处,还请各位大佬指出,我好立刻改正。


????????话不多说,先上硬货。

一、回答上面的问题:

1、什么是I2C通信呢?

????????简单,两条线通信同步串行总线。(在此不做更多说明)

2、为什么要学习这些看起来“根本没多大用处”且“与我无关”的通信协议呢?

????????大哥,你总不能永远靠串口吃饭吧??况且真正到了实际项目中,通信的方式要根据环境选择,你总不能想当然的自己决定吧,学好这些通信方式,你才敢有底气去接手一些大项目吧。

3、该怎么学呢?

????????个人觉得,刚刚学习阶段,只要理解它大概的原理,然后会熟练调用函数就可以了。


二、初识I2C通信:

1、认识I2C的两根线:SCL时钟线和SDA数据线。

? ? ? ? SCL时钟线,是为整个通信过程提供了时钟信号(后面会说明).
????????SDA数据线,在每一个周期里发送0或者1,用这些0和1传输数据。

2、如何传输数据呢?
????????首先,要传输数据,你总的告诉“另一半”传输开始了吧,所以,开始信号是必不可少的,对应也要有结束信号咯,你的“另一半"接收到了数据,总得告诉你一声吧,所以,应答信号也是少不了的。记住啦,它一点也不难,还有,我会按照我的理解方式来描述它,不会枯燥的。

3.这些信号如何通过两根线就实现呢????
? ? ? ? 数据线SDA以时钟线SCL作为参照。
????????开始信号:SCL为高电平时,SDA由高电平向低转变。传输开始。
????????结束信号:SCL为高电平时,SDA由低电平向高转变。传输结束。
????????应答信号:接收数据的IC 在接收完8个bit的数据之后,向发送数据的IC返回特定脉冲的低电平,表示数据已被签收。

? ? ????放到实际实验中怎么理解呢?

????????CPU向受控单元发送一段数据之后,等待受控单元发送一个应答信号,若未接受到应答信号,表示受控单元发生故障。这些信号中,只有开始信号时必须的。而且,只有当SCL上为低电平时,SDA上的电平才允许发生变化。
? ? ? ? 上面说的这些通俗易懂,是必须要了解的。


三、在实战中解读IIC通信。

????????其实,在工程中用到的绝大部分是调用I2C相关函数。
????????下面就用手势识别模块举例,我用的是正点原子配套的PAJ7620U2.

????????首先是初始化I2C对应的引脚 (我认为硬件I2C和软件I2C所实现的功能都一样,不过模拟I2C使用的更广泛,因为方便啊,而且,STM32硬件I2C引脚很鸡肋,还不如不用)。

PAJ2670U2 I2C初始化,(SDASCL都被拉高,表示为空闲状态)

1

开始信号:

2

说实话,感觉这样照着程序COPY代码太土了,而且浪费大家时间。下面,重要的干货来了。

1、要明确一点,I2C是一种通信方式,不要习惯性想着IIC又该怎么配置?是否要开启对应的时钟?是否可以产生中断?等等,这些东西都是用给外设配置的,通信方式的底层函数基本是不会变的,你要做的就是基于已有的几种命令,与你的IC进行通信。

2、I2C根本不难,然而,就代表不用敲代码了吗?错,大错特错,好记性不如烂笔头,找一个I2C通信例程,敲几遍.C文件里的代码,对于以后做项目还是很有帮助的。

3.不要懒惰,学习这几种通信方式,最好是对比着学习,在接下来的几天里,我将会以这几种方式,分别呈上我对几种通信方式的理解。大牛不喜勿喷,谢谢。
我曾许下十年,只为最美的遇见。
?

实验目的:

学习ATK-PAJ7620U2手势识别模块的使用,实现9个手势识别(GS)和接近距离(PS)的检测功能,输出结果显示在LCD液晶中。

硬件资源:

1,DS0、DS1(连接在PA8、PD2)
2,串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面)
3,ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模块(通过GPIO驱动,连接关系见lcd.h)
4,按键KEY0(PC5)/KEY1(PA15)/WK_UP(PA0)
5,ATK-PAJ7620U2手势识别模块一个(连接在PC11(SDA),PC12(SCL),INT未用到),可直接插在板上ATK-MODULE的接口。

实验现象:
本实验功能简介:本实验用于测试ATK-PAJ7620U2手势识别模块,包含两个测试:
1,手势识别(GS)测试-通过KEY1按键进入此项测试。实现PAJ7620U2自带9个手势识别的检测,向上(Up)、向下(Dowm)、向左(Left)、向右(Right)、向前(Forward)、向后(Backward)、顺时针(Clockwise)、逆时针(Counterclockwise)、和挥动(Wave)。当识别到正确的手势,DS1灯会闪烁,同时手势结果显示在LCD屏幕上,并且串口输出。DS0灯闪烁提示程序正在运行,按下KEY_UP按键,可返回主菜单页面。

2,接近检测(PS)测试-通过KEY0按键进入此项测试。实现读取PAJ7620U2接近物体的体积大小和亮度的传感器数据,显示在LCD屏幕上,并串口输出。

同时DS0灯闪烁,提示程序正在运行,当按下KEY_UP按键,可返回主菜单页面。

另外,本例程将PAJ7620U2的读写操作函数加入USMART控制,我们可以通过USMART对PAJ7620U2进行控制。

注意事项:
1,4.3寸和7寸屏需要比较大电流,USB供电可能不足,请用外部电源适配器(推荐外接12V 1A电源).
?

2,本例程在LCD_Init函数里面(在lcd.c),用到了printf,如果不初始化串口1,将导致液晶无法显示!!
?

3,模块是属于光学器件,传感器表层的不洁净,会容易导致测量不佳。所以模块在使用前,保持传感器表层的清洁度,工作时请勿用手去触摸,以免导致模块工作不正常。

单片机源程序如下:

//选择PAJ7620U2 BANK区域

//PAJ7620U2唤醒

//PAJ7620U2初始化

//返回值:0:失败 1:成功

//主菜单

//手势识别测试

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:23:33  更:2021-10-06 12:23:53 
 
开发: 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/26 5:34:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码