关于使用DFRobot的Mini MP3 Player的串口指令
来源:互联网 发布:网上淘宝客服兼职 编辑:程序博客网 时间:2024/05/16 09:05
最近在使用Arduino做一个项目,需要播放MP3文件,通过比较之后采用DFRobot的MP3 Player,它通过串口指令控制,可以制定曲目播放。在使用的过程中遇到一些小问题,特此记录。
上面是官方文档中串口指令的格式,大部分没什么问题,除了校验和计算的那部分。理论上校验和是数据相加之后再取反,比如play的指令,0x7E0xFF 0x06 0x0D 0x00 0x00 0x00 0xXX 0xXX 0xEF,不计开始和结束部分(红色字部分)的数据和是0x0112,按位取反之后为0xFEED,所以完整的指令应该为:
0x7E 0xFF 0x06 0x0D 0x00 0x00 0x00 0xFE 0xED 0xEF
而实际上官方的库文件总给出的play指令如下,这个指令才能让MP3播放:
0x7E 0xFF 0x06 0x0D 0x00 0x00 0x00 0xFE 0xEE 0xEF
官方库的的校验和计算为:
uint8_t checksum = 0;<span style="color:#ff0000;">for (int i=2; i<8; i++) {checksum += cmd[i];}</span><span style="color:#3366ff;">cmd[8] = (uint8_t)~checksum;</span>for (int i=0; i<10; i++) { //send cmd(*mySerial).write (cmd[i]);}}这种方法与文档上描述的不一致,校验位的高八位都没计算,总是0xFE,我采用下面方法:
uint16_t checksum = 0;<span style="color:#ff0000;">for (int i=1; i<7; i++) {checksum += cmd[i];}</span><span style="color:#3366ff;">uint16_t leftsum = 0x010000 - checksum;cmd[7] = (uint8_t)(leftsum >> 8);cmd[8] = (uint8_t)(leftsum);</span>for (int i=0; i<10; i++) { //send cmd(*mySerial).write (cmd[i]);}
这样算出来的结果与官方库程序的计算结果一致,不过更符合文档对校验位的描述。
PS:感觉淘宝卖家比较坑,给的库文件都有问题,这个网站上的资料靠谱一些:
http://wiki.dfrobot.com.cn/index.php/(SKU:DFR0299)DFPlayer_Mini%E6%A8%A1%E5%9D%97
0 0
- 关于使用DFRobot的Mini MP3 Player的串口指令
- DFRobot的产品
- 最小的mp3 player
- 在校时开发的Mini Player
- 测试一个基于flash的mp3 player
- 发现一个很好用的MP3-player
- 你的第一个MP3 player
- mini 2440的test 的串口操作
- 关于Windows Media Player 不能播放 动态VBR编码的mp3文件
- 关于Windows Media Player 不能播放 动态VBR编码的mp3文件
- onenet mini 串口乱码的解决
- 关于MINI.msi的问题
- mini 2440的test 的串口操作[转]
- 关于WEB使用media player的一些说明
- 关于player的一些东西
- 关于mini-ui的checkboxcolumn的Bug
- 关于libmad开源mp3音频解码库的使用
- 关于arduino mini下载程序的方法
- 过滤sd卡中隐藏的文件
- 白话压缩感知(含Matlab代码)
- UVA - 1400"Ray, Pass me the dishes!"(线段树)
- hdu 2254 奥运[有向图从v1到v2方案数](大坑)
- OpenCV基础篇之绘图及RNG随机数对象
- 关于使用DFRobot的Mini MP3 Player的串口指令
- linux I2C读写实例 .
- 阿萨德可京爱了似的了金卡路上看见的了看见阿里是科技大
- Jtable导入excel
- OpenCV基础篇之像素访问
- ResourceManager内部组成
- Attach Gripper to Robot
- 使用Pspice进行电路仿真
- 汇编