大家好、
我使用的是由 HET 硬件触发的单个 ADC1通道。 转换结果由 DMA 传输到 RAM 缓冲器。 现在 RAM 缓冲区为32位宽、我想将其减小到16位、并将转换结果(最大12位)传输到该缓冲区。
我不确定如何设置 DMA 控件数据包以完成作业、现在看起来是这样的:
ADC1_dmaCTRLPKT.Sadd =(CPU_INT32U)(&adcREG1->GxBUF[adcGROUP1]);// DMA 的源地址为 ADC1 GP1 FIFO
ADC1_dmaCTRLPKT.DADD =(CPU_INT32U) ADC1_GP1_Buffers;//目标地址
ADC1_dmaCTRLPKT.CHCTRL = 0;
ADC1_dmaCTRLPKT.FRCNT = 1000;//帧计数-> 1000个 ADC 样本
ADC1_dmaCTRLPKT.ELCNT = 1;//一个 ADC 通道
ADC1_dmaCTRLPKT.ELDOFFSET = 0;//元素目标偏移
ADC1_dmaCTRLPKT.ELSOFFSET = 0;//元素源偏移
ADC1_dmaCTRLPKT.FRDOFFSET = 0;//帧目标偏移
ADC1_dmaCTRLPKT.FRSOFFSET = 0;//帧源偏移
ADC1_dmaCTRLPKT.PORTASGN = 4;//对于所有 TMS570 PORTB;通道的值端口分配寄存器始终为0x100
ADC1_dmaCTRLPKT.RDSIZE = ACCESS_32_BIT;//读取大小
ADC1_dmaCTRLPKT.WRSIZE = ACCESS_16_BIT;//写入大小
ADC1_dmaCTRLPKT.tType = FRAME_TRANSFSION;//传输类型- FRAME_TRANSF/BLOCK_TRANSFRATE
ADC1_dmaCTRLPKT.ADDMODERD = ADDR_FIXED;//地址模式读取
ADC1_dmaCTRLPKT.ADDMODEWR = ADDR_INC1;//地址模式写入:Addr_Fixed/ADDR_INC1/ADDR_OFFSET
ADC1_dmaCTRLPKT.AUTOINIT = AUTOINIT_ON;//自动初始化
将 ADC1_dmaCTRLPKT.WRSIZE 设置为 ACCESS_16_BIT 实际上不起作用、那么缓冲区看起来是这样的: 
是否可以仅将 ADC FIFO 的数据部分(低16位)传输到16位缓冲器中?
此致、
Juergen