楼主: 我想做一个USB音频设备,参考了STM32 USBLib demo里的AUDIOSPEAKER项目,在这例子项目里发现USB和I2S都没有使用DMA,于是看了一个文档,没有找到DMA到USB的支持,但I2S是有DMA支持的。我想确定几个事情, 1. STM32是否没有USB的DMA支持? 2. 不管USB是否有DMA支持,假设从USB接收到的音频数据都放在unsigned char rxPCM[4096],我想I2S的DMA从这内存中取数据,见到STM32的DMA有circle_mode,而且说DMA每传输半个字节和一个字节都会产生中断,想在这DMA传输中断时更新rxPCM,但没有发现DMA相关寄存器有指示当前读到源地址中第几个字节的寄存器,如果不能读出当前读到源地址中第几个字节这个信息,也就无法知道应该更新rxPCM的什么位置,也就体现不到circle_mode有什么作用? -------------------------------------------------------------------------------------------------------- 1楼: DMA支持USB的数据传输 -------------------------------------------------------------------------------------------------------- 2楼: usecool, 这位朋友是在什么地方见到说USB有DMA支持? -------------------------------------------------------------------------------------------------------- 3楼: DMA不是有个记录剩余传输数量的寄存器DMA_CNDTR吗?用这个就可以知道读到源地址哪个位置了。DMA的中断好像是传输完总数量的一半和完全传输完才产生的吧,不是每半字节和每个字节产生 -------------------------------------------------------------------------------------------------------- 4楼: sonicll, 你说得对,我看错了。 对于circular_mode,如果在传输一半中断时通过MCU更新这一半数据的话,你认为会有问题吗?难道又需要用另一个DMA来更新这一半的数据? -------------------------------------------------------------------------------------------------------- 5楼: 4#: 可以更新已经传输的部分的数据,因为对于DMA来说,那些数据已经是使用过可以废弃的部分了,没有传输的部分也可以更新。 DMA的作用是传输数据,而不验证数据。 |
stm32 USB的CDC类传输掉数据
STM32F105 USB接收数据不断进入中断,出现“死机”现象
关于STM32CubeMX配置的USB例程电脑无法识别问题
STM32F407 USB-HS-OTG是否不外接PHY可以做虚拟串口?
如何做一个USB从机键盘用stm32f407
用STM32F4 Cube MX生成的USB Device C代码的BUG
USB Device + FatFS + SDIO 模拟U盘意外只读问题
USB Device + FatFS + SDIO 问题
STM32H7配置成USB DEVICE时,连接电脑时不进入中断
STM32F446 USB和串口1 冲突