一、开发准备
1、驱动包获取,官网下载或供应商获取
2、slave地址:AD connect to GND,0x5F;Connect to VCC 0x5E。
3、频率支持400k/1M(向下兼容,200K可用)
二、软件开发
1、芯片初始化
2、模式选择
支持多种振动波形播放模式:
2.1 Ram播放模式
2.2 Stream播放
2.3 GPIO触发播放模式
2.4 F0自动跟踪播放模式
3、ram播放
RAM播放模式通常用在相对简单,波形固定的应用场景。通过I 2C接口将预先准备的波形数据,按Waveform 波形数据的格式要求写入RAM Waveform区域。并构建Play List数据结构,写入Play List区域。然后通过I 2C接口 发送开始播放的命令。
RAM播放的具体步骤:
1) 向寄存器 RAM_CFG 写入 0x06,清除 Waveform 区域和 Play List 区域的数据,待 RAM_CFG 寄存器的值为 0x00,数据清除结束。
2) 使用已有波形数据构建 Waveform Table 和 Waveform Data 数据结构,通过 I 2C 接口下载到 RAM Waveform 区域,请参考“RAM 数据写入”步骤。
3) 根据播放的需求构建 Play List 数据结构,通过 I 2C 接口下载到 RAM Play List 区域,请参考“RAM 数据写入” 步骤。
4) 向寄存器 PLAY_CFG 的 PLAY_MODE 写入 0x01,设定为 RAM 播放模式。
5) 向寄存器 PLAY_CTRL 的 GO 写入 0x01,开始 RAM 播放模式。
6) 监测 PLAY_CTRL 的 GO 位,如果 GO 位的值为 0,则播放结束。或者监测中断,如果检测到中断,并且 INTS_PLAY_DONE 位为 1,也表示播放结束。
3.1 初始化
软件reset后进行初始化函数调用:
/*rt903x init*/
rt903x_soft_reset();
rt903x_init();
ram_play_demo();
3.2 振动驱动
对控制寄存器写入1开始RAM播放模式,进行振动。
rt903x_go(1);
三、问题解决
1、Chip_ID读取成功但是无法播放
查问题发现变量定义的大小有错误。
问题发现:使用逻辑分析仪抓取发出的波形,发现发送地址读写后跟随了一个字节的0,才发出寄存器地址。
问题解决:发现定义的寄存器地址、slaveAddress的大小有问题,发送长度那里使用了sizeof函数导致报文误触发问题。
2、测试函数一秒振动一次,振动几次后停止
问题发现:测试过程中振动停止
问题追踪:查验芯片的状态寄存器(0x26、0x27)发现芯片状态处于过压保护、降低增益值以后报出过流保护,与供应商交涉后说是硬件问题(后续待更新)
(注:由于MCU频率较低,本次使用方式ram播放,后续再使用其他方式再进行更新)
到此这篇jflash命令(jflash命令行烧录S32K144)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/36703.html