8h系列adc用dma方式,首地址及地址数量问题
<p>请问如果8h采样 adc dma方式10个通道采样,256次平均值,如果指定首地址xram 0000H,</p><p>是不是dma采样时,地址从0~ (10-1)(2 *256+4)+2 *256+3 都被占用了?</p>
#define MAIN_Fosc 22118400UL //定义主时钟
#define ADC_SPEED 15 /* 0~15, ADC转换时间(CPU时钟数) = (n+1)*32ADCCFG */
#define RES_FMT (1<<5) /* ADC结果格式 0: 左对齐, ADC_RES: D11 D10 D9 D8 D7 D6 D5 D4, ADC_RESL: D3 D2 D1 D0 0 0 0 0 */
/* ADCCFG 1: 右对齐, ADC_RES: 0 0 0 0 D11 D10 D9 D8, ADC_RESL: D7 D6 D5 D4 D3 D2 D1 D0 */
#define ADC_CH 2 /* 1~16, ADC转换通道数, 需同步修改 DMA_ADC_CHSW 转换通道 */
#define ADC_NUM 256 /* 每个通道ADC转换次数, 需同步修改DMA_ADC_CFG2 转换次数 */
#define DMA_ADDR 0x800 /* DMA数据存放地址 */unsigned char xdata DMA_Buffer _at_ DMA_ADDR; ADC_Value=DMA_Buffer;
ADC_Value<<=8;
ADC_Value|=DMA_Buffer;
ADC_Value<<=8;
ADC_Value|=DMA_Buffer;
// ADC_Value>>=4; //20bit结果右移4位得16位结果
ADC_Value>>=8; //20bit结果右移8位得12位结果
通道数*(次数*2字节+4字节)
2字节是每个值高8位和低8位,4字节是通道号、结果余数、结果高字节、结果低字节
10通道、256次平均,则需要内存 = (256*2+4)*10=5160字节。
页:
[1]