查看: 3147|回复: 18

[求助] Mbed USB Audio例程的问题

[复制链接]
  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
    发表于 2015-2-13 01:04:02 | 显示全部楼层 |阅读模式
    本帖最后由 shaoziyang 于 2015-2-13 01:05 编辑

    测试了Mbed下的USB Audio例程。程序编译和下载没有问题,设备也被Windows识别出来,但是无法播放音乐。不知道大家试过这个例程没有?

    1. // USBAudio speaker example

    2. #include "mbed.h"
    3. #include "USBAudio.h"

    4. // frequency: 48 kHz
    5. #define FREQ 48000

    6. // 1 channel: mono
    7. #define NB_CHA 1

    8. // length of an audio packet: each ms, we receive 48 * 16bits ->48 * 2 bytes. as there is one channel, the length will be 48 * 2 * 1
    9. #define AUDIO_LENGTH_PACKET 48 * 2 * 1

    10. // USBAudio (we just use audio packets received, we don't send audio packets to the computer in this example)
    11. USBAudio audio(FREQ, NB_CHA, 8000, 1, 0x7180, 0x7500);

    12. // speaker connected to the AnalogOut output. The audio stream received over USb will be sent to the speaker
    13. AnalogOut speaker(PTE30);

    14. // ticker to send data to the speaker at the good frequency
    15. Ticker tic;

    16. // buffer where will be store one audio packet (LENGTH_AUDIO_PACKET/2 because we are storing int16 and not uint8)
    17. int16_t buf[AUDIO_LENGTH_PACKET/2];

    18. // show if an audio packet is available
    19. volatile bool available = false;

    20. // index of the value which will be send to the speaker
    21. int index_buf = 0;

    22. // previous value sent to the speaker
    23. uint16_t p_val = 0;

    24. // function executed each 1/FREQ s
    25. void tic_handler() {
    26.     float speaker_value;

    27.     if (available) {
    28.         //convert 2 bytes in float
    29.         speaker_value = (float)(buf[index_buf]);
    30.         
    31.         // speaker_value between 0 and 65535
    32.         speaker_value += 32768.0;

    33.         // adjust according to current volume
    34.         speaker_value *= audio.getVolume();
    35.         
    36.         // as two bytes has been read, we move the index of two bytes
    37.         index_buf++;
    38.         
    39.         // if we have read all the buffer, no more data available
    40.         if (index_buf == AUDIO_LENGTH_PACKET/2) {
    41.             index_buf = 0;
    42.             available = false;
    43.         }
    44.     } else {
    45.         speaker_value = p_val;
    46.     }
    47.    
    48.     p_val = speaker_value;

    49.     // send value to the speaker
    50.     speaker.write_u16((uint16_t)speaker_value);
    51. }

    52. int main() {

    53.     // attach a function executed each 1/FREQ s
    54.     tic.attach_us(tic_handler, 1000000.0/(float)FREQ);

    55.     while (1) {
    56.         // read an audio packet
    57.         audio.read((uint8_t *)buf);
    58.         available = true;
    59.     }
    60. }
    复制代码

    我知道答案 目前已有18人回答
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    11098
    最后登录
    2019-1-27
    发表于 2015-2-13 09:46:48 | 显示全部楼层
    YL - KL26Z?  是什么问题呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
     楼主| 发表于 2015-2-13 09:54:42 | 显示全部楼层
    小七 发表于 2015-2-13 09:46
    YL - KL26Z?  是什么问题呢?

    问题就是设备可以识别出来,但放不出声音。YL-KL26Z的小喇叭是好的,用别的例程是可以发声的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24

    主题

    410

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1203
    最后登录
    2018-6-27
    发表于 2015-3-6 20:20:02 | 显示全部楼层
    是用的mbed上KL25的程序么?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
     楼主| 发表于 2015-3-6 21:11:28 | 显示全部楼层
    770781327 发表于 2015-3-6 20:20
    是用的mbed上KL25的程序么?

    对,KL25和KL26差不多。使用KL25Z的结果也是一样的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24

    主题

    410

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1203
    最后登录
    2018-6-27
    发表于 2015-3-7 12:43:54 | 显示全部楼层
    shaoziyang 发表于 2015-3-6 21:11
    对,KL25和KL26差不多。使用KL25Z的结果也是一样的。

    我觉得可以看下KL25和KL26的区别,除了头文件不同外还有部分寄存器好像也是不一样的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24

    主题

    410

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1203
    最后登录
    2018-6-27
    发表于 2015-3-7 12:46:05 | 显示全部楼层
    从寄存器的角度,由于多了I2S,肯定 会多I2S的相关寄存器,比如中断号,SIM等。
    至于区别,罗列几个:
    1: MCG_C2_FCFTRIM,KL26有,KL25没有。
    2:KL25的MCG_S_LOLS0, 实际对应的是KL26的MCG_S_LOLS,寄存器名字不一样。
    3,sp寄存器不一样,寄存器的memory地址也不一样。
    I2C倒是一样的。
    好像还有其他的,反正KL25和KL26引脚不是完全兼容的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
     楼主| 发表于 2015-3-7 15:26:10 | 显示全部楼层
    770781327 发表于 2015-3-7 12:46
    从寄存器的角度,由于多了I2S,肯定 会多I2S的相关寄存器,比如中断号,SIM等。
    至于区别,罗列几个:
    1: M ...

    大部分功能还是相同的,程序可以直接移植,只有少量地方需要修改。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-4 14:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    5

    主题

    130

    帖子

    0

    高级会员

    Rank: 4

    积分
    585
    最后登录
    2017-2-11
    发表于 2015-4-24 19:27:59 | 显示全部楼层
    没用过,帮顶
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    39

    帖子

    0

    注册会员

    Rank: 2

    积分
    114
    最后登录
    2015-10-8
    发表于 2015-4-24 20:46:43 | 显示全部楼层
    帮顶
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 21:58 , Processed in 0.139569 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表