This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
尊敬的 TI 支持团队:
我刚刚开始使用微控制器(STM32和 Hercules),并希望通过 ADC 读取电流值,尽可能快地计算功率。
因此,我尝试配置转换后的 ADC 值(2个通道,例如 I1和 I2)的 DMA 传输,而不生成任何会暂时停止主程序的中断。 因此、如果 ADC 也配置为连续模式、则最后转换的电流值应始终可用于主程序。
我设法通过 STM32实现了这种 ADC DMA 配置、但我很难与 Hercules 搭配使用。 我已经读取了多个线程、比如
但它仍然不起作用。 我还不理解上面复制的线程中提供的源地址值以及元素源偏移量。 如果我理解正确,Group1 RAM 的基本源地址应为0xFF30000 +(numberofChannelsEvent ( BNDA)+ Result)*4。 例如,通道0的第一个结果始终为0xFF30000 + 4*16 (如果 BNDA = 8)+ 0 (第一个结果)。 这也可以在附件中的 dma_configuration 中看到。
此外、如果我尝试在没有 DMA 的情况下读取 ADC 数据、看起来工作正常。
sys_main (我只在那里编写代码)和 HalCoGen 配置可在高速缓存中找到。
谢谢、
您好!
ADC1结果存储器的基地址为0xFF3E0000 (数据表中的表6-25)、ADC2结果存储器的基地址为0xFF3A0000 (数据表中的表6-25)
2.如果在 ADC1组1中使用通道1和通道2、并且希望直接从组1存储器中读出 ADC 转换结果。 组1的转换结果可从地址 ADC RAM 基址+4*2*BNDA 开始访问。 该地址的第一个结果用于输入通道1、下一个结果用于输入通道2、依此类推。
2.如果要从 FIFO 队列中读出组1的转换结果,可以使用缓冲寄存器(uint32)(&adcREG1->GxBUF[1]作为 DMA 包配置中的源地址。
您好!
只需读取您的代码、DMA 端口不正确。
在 TMS570LC43x 器件上、Porta 用于闪存、SRAM 和 EMIF。 端口 B 用于所有外设和所有外设存储器(ADC RAM)。 因此、DMA 数据包配置中的 DMA 端口应为:
PORTB_READ_PORTA_WRITE、其值为0x00。 您在配置中使用4、
尊敬的王先生:
感谢您的快速回复! 在 DMA 控制包配置中将端口从4更改为0成功解决了 DMA 传输问题。 当然、您是否可以再次查看我的代码在 ADC_postinit 函数中、在该函数中、我将 ADC 注册表配置为在循环模式下启用 DMA?
接收值似乎是一个随机的位(接收正弦电压时应采用范围形式[0 3.2]V)。 如果我将接收阵列大小(aADC1ConversionDataX)配置为更高,则值与正弦形式不符。 但我首先尝试自己解决这个问题、只有查看 ADC_postinit 函数、这种情况才会更好。
此致、
Sebastian