打印
[研电赛技术支持]

GD32F4ZGT6 I2S读取24位麦克风

[复制链接]
156|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lshaiou|  楼主 | 2023-8-1 06:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在研究GD32F4ZGT6  读取24位麦克风数据,PCM短帧。程序配置如下,
                spi_i2s_deinit(SPI1);
                i2s_init(SPI1, I2S_MODE_MASTERRX, I2S_STD_PCMSHORT, I2S_CKPL_LOW);
                ///i2s_init(SPI1, I2S_MODE_MASTERRX, I2S_STD_PHILLIPS, I2S_CKPL_LOW);
                i2s_psc_config(SPI1, I2S_AUDIOSAMPLE_16K, I2S_FRAMEFORMAT_DT24B_CH32B, I2S_MCKOUT_DISABLE);
                dma_config();
                i2s_enable(SPI1);
                dma_channel_enable(DMA0, DMA_CH3);
               spi_dma_enable(SPI1, SPI_DMA_RECEIVE);
             实际能读到麦克风的24数据,图片上传失败, 如: rxbuf[0] = 0x000A,rxbuf[1] = 0x4100,rxbuf[3] = 0x7FFC,rxbuf[3] = 0xB900....
            看接收的数据,第二次读入的数据,低8位为0,应该是读到24 位数据了。rxbuf[0] = 0x000A,rxbuf[1] = 0x4100,数据高位对齐,即0x000A4100 ,0x7FFC0B900的高24位。
            现在的问题是,按照麦克风手册的说法,应该是24位有符号数据,那么音频数据的最高位应该会出现1,表示负值。但现在说到的数据最高位全是0.我看STM32 手册,介绍说是因为最高位实际是上一个数据的最后一位。请问是不是这个原因?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

14

帖子

1

粉丝