尝试使用ADPCM库 编码采集到的数据 效果不理想
虽然按照说明文档一步步来
首先是AD采集的设置
由于开发板上AIN2已经和滑动变阻器相连
换为AIN3
主函数中仅仅调用了R_encode_main(); 函数
void main(void)
{
/* Start user code. Do not edit comment generated here */
R_encode_main();
while (1U)
{
}
/* End user code. Do not edit comment generated here */
}
调试时 学习了upload
Debug菜单下有个unload...
现在memory串口中找到g_EncodedData的地址
然后单击Debug->upload...
弹出对话框
设置好文件名 文件类型 和数据地址后 导出数据
利用ADPCM自带的工具软件 将导出的bin文件转换为wav文件
选择bin文件
设置导出的wav文件名
打开wav文件
结果
貌似不对!!
有谁调试得到理想结果的么?
附上我的代码 希望有人能帮忙解决下
myADPCMen_Cube.rar
![](http://uphotos.eepw.com.cn/0xiaogui0/thumb/avatar.jpg)
51楼
![](http://uphotos.eepw.com.cn/0xiaogui0/thumb/avatar.jpg)
52楼
10-05 实现DMA 方式串口发送数据
参考了硬件手册的809 及 812 页 的流程图 以及说明![](http://uphotos.eepw.com.cn/0xiaogui0/pics/3624a838b8056d00c3f5dd4ed004188b.jpg)
以及 RSKRL78G13_Samples_IAR 中的 DMAC 工程
首先是Applilet 的设置
串口2 发送
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/feca02f563637da7336eabf6ce9edc75.jpg)
DMA传输
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/8c3e37524a56a7f1b509866fbed34e67.jpg)
设置SFR 及 RAM 地址 传输方向 触发方式
主要代码
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/dadd57cba5f4dd0a6e07dd48132f9c94.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/ed7b2bf2dc8ee347e107ddd2e7def3bb.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/1692d4982afee9b02d331011307da0d7.jpg)
调试的过程
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/57028c3a6e2f672e8c5d7827f49b49ee.jpg)
串口接收到的结果
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/0e890a571354d9ad3f1750af43b62f5d.jpg)
代码:
myComDMA.rar
下一步准备做串口DMA接收数据
参考了硬件手册的809 及 812 页 的流程图 以及说明
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/3624a838b8056d00c3f5dd4ed004188b.jpg)
以及 RSKRL78G13_Samples_IAR 中的 DMAC 工程
首先是Applilet 的设置
串口2 发送
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/feca02f563637da7336eabf6ce9edc75.jpg)
DMA传输
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/8c3e37524a56a7f1b509866fbed34e67.jpg)
设置SFR 及 RAM 地址 传输方向 触发方式
主要代码
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/dadd57cba5f4dd0a6e07dd48132f9c94.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/ed7b2bf2dc8ee347e107ddd2e7def3bb.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/1692d4982afee9b02d331011307da0d7.jpg)
调试的过程
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/57028c3a6e2f672e8c5d7827f49b49ee.jpg)
串口接收到的结果
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/0e890a571354d9ad3f1750af43b62f5d.jpg)
代码:
myComDMA.rar
下一步准备做串口DMA接收数据
![](http://uphotos.eepw.com.cn/0xiaogui0/thumb/avatar.jpg)
54楼
DMA 串口接收成功
参考硬件手册的 815 816 页 流程图
修改之处在于如下面的Remark所说 没有使用软件触发DMA中断,采用串口接收中断触发DMA传输中断
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/362b43c269fd46b91070092d5ab1be12.jpg)
Applilet 设置
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/ae6463dc534fd7501161eb7ef9601748.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/d4fd3ab34ae39bdd823e1b252c7b9139.jpg)
代码
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/3a731421bfddbbc288a4cca577fadcca.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/b664bb638f2ee718c978640761984666.jpg)
调试过程
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/82f5bd8d10afd29255cda24d17cd7024.jpg)
参考硬件手册的 815 816 页 流程图
修改之处在于如下面的Remark所说 没有使用软件触发DMA中断,采用串口接收中断触发DMA传输中断
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/362b43c269fd46b91070092d5ab1be12.jpg)
Applilet 设置
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/ae6463dc534fd7501161eb7ef9601748.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/d4fd3ab34ae39bdd823e1b252c7b9139.jpg)
代码
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/3a731421bfddbbc288a4cca577fadcca.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/b664bb638f2ee718c978640761984666.jpg)
调试过程
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/82f5bd8d10afd29255cda24d17cd7024.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/6ad7aaa36e6715ad93ce2db9f35c8249.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/thumb/avatar.jpg)
56楼
10-07 DMA 方式 AD数据采集
参考硬件手册832 及 833页
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/e941026f5fd2c2a541899304c0759f93.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/fb66b31d6ad3820342b051f0556e7e6c.jpg)
Applilet 设置
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/b0eb7367fc159bfefdcb7f396577c312.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/218a21159513a046688e9543930e159f.jpg)
主要代码:
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/c26f2be0c64f3b53c234757b69be556a.jpg)
分别对 AD 8位 10位 DMA 8位 16位 进行了调试
8位AD采集 16位DMA
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/5dca2e04505ed5a462d23631b93ca78d.jpg)
可以发现 DMA的 RAM 的低8位均为0 高8位和 AD_ReadByte函数得到结果一致
这是由于AD结果寄存器ADCRH为16位寄存器,AD_ReadByte得到其高8位
函数AD_ReadByte原型
void AD_ReadByte(UCHAR *buffer)
{
*buffer = ADCRH; // 高8位
}
10位AD采集 16位DMA
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/ad39d23356c50e4ce5045f1e0218ae4b.jpg)
乍一看发现DMA 的RAM 和 AD采集的结果不一致?
这是由于DMA直接将16位寄存器 ADCR 的值进行了保存
而10位AD采集结果是按照左对齐的,函数AD_Read为了得到实际结果内部进行了右移,从函数原型中可以看出
void AD_Read(USHORT *buffer)
{
*buffer = (USHORT)(ADCR >> 6U); // 左对齐? 向右移位
}
而进过检验运算后 结果是一致的
0x7B40 >> 6 = 0x1ED
同时发现 关于DMA的寄存器 DBC 设置的是DMA 传输的次数 而不是DMA传输的字节数
虽然手册上解释说是"DMA byte count register" 太容易误导了
这一点可以从手册上的 图15-6上看出
每次DMA传输 不管DRA的地址是加1还是加2 DBC都是只减去1
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/4fe047f65e38fd630f40c99ec3fbd96f.jpg)
假期里把DMA 方式尝试了一下 收货还是挺大的
参考硬件手册832 及 833页
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/e941026f5fd2c2a541899304c0759f93.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/fb66b31d6ad3820342b051f0556e7e6c.jpg)
Applilet 设置
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/b0eb7367fc159bfefdcb7f396577c312.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/218a21159513a046688e9543930e159f.jpg)
主要代码:
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/c26f2be0c64f3b53c234757b69be556a.jpg)
分别对 AD 8位 10位 DMA 8位 16位 进行了调试
8位AD采集 16位DMA
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/5dca2e04505ed5a462d23631b93ca78d.jpg)
可以发现 DMA的 RAM 的低8位均为0 高8位和 AD_ReadByte函数得到结果一致
这是由于AD结果寄存器ADCRH为16位寄存器,AD_ReadByte得到其高8位
函数AD_ReadByte原型
void AD_ReadByte(UCHAR *buffer)
{
*buffer = ADCRH; // 高8位
}
10位AD采集 16位DMA
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/ad39d23356c50e4ce5045f1e0218ae4b.jpg)
乍一看发现DMA 的RAM 和 AD采集的结果不一致?
这是由于DMA直接将16位寄存器 ADCR 的值进行了保存
而10位AD采集结果是按照左对齐的,函数AD_Read为了得到实际结果内部进行了右移,从函数原型中可以看出
void AD_Read(USHORT *buffer)
{
*buffer = (USHORT)(ADCR >> 6U); // 左对齐? 向右移位
}
而进过检验运算后 结果是一致的
0x7B40 >> 6 = 0x1ED
同时发现 关于DMA的寄存器 DBC 设置的是DMA 传输的次数 而不是DMA传输的字节数
虽然手册上解释说是"DMA byte count register" 太容易误导了
这一点可以从手册上的 图15-6上看出
每次DMA传输 不管DRA的地址是加1还是加2 DBC都是只减去1
![](http://uphotos.eepw.com.cn/0xiaogui0/pics/4fe047f65e38fd630f40c99ec3fbd96f.jpg)
假期里把DMA 方式尝试了一下 收货还是挺大的
![](http://uphotos.eepw.com.cn/0xiaogui0/thumb/avatar.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/thumb/avatar.jpg)
![](http://uphotos.eepw.com.cn/0xiaogui0/thumb/avatar.jpg)
60楼
10-28 基于瑞萨的声音采集系统测试
上位机由VC6 编写,通过串口向MCU 发送“开始”或者“停止”命令,并将接收到的采集数据显示。
下位机根据接收到的命令进入 待机模式 或者 工作模式,在工作模式下,定时器触发AD采集信号,并将信号以一定的格式发送到上位机;在待机模式下,MCU进入低功耗的HALT模式,通过串口响应可以退出HALT模式。
测试视频已经上传
视频地址:http://union.bokecc.com/flash/player.swf?vid=5331C9EEDD0AF607&siteid=290666218ACBA694&playerid=EEA982EE6B20F4D1&playertype=1
上位机由VC6 编写,通过串口向MCU 发送“开始”或者“停止”命令,并将接收到的采集数据显示。
下位机根据接收到的命令进入 待机模式 或者 工作模式,在工作模式下,定时器触发AD采集信号,并将信号以一定的格式发送到上位机;在待机模式下,MCU进入低功耗的HALT模式,通过串口响应可以退出HALT模式。
测试视频已经上传
视频地址:http://union.bokecc.com/flash/player.swf?vid=5331C9EEDD0AF607&siteid=290666218ACBA694&playerid=EEA982EE6B20F4D1&playertype=1
回复
有奖活动 | |
---|---|
【有奖活动——B站互动赢积分】活动开启啦! | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |