ADS8556:Serial Interface: Data Output with One Active SDO
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.
ADS8556:Serial Interface: Data Output with One Active SDO
Tony Tang:
你好!
在我的EDMA3中PaRAM23的Bcount = 1,Acount = 2; PaRAM19的Bcount = 5,Acount = 2。
我做过以下两种测试:
一、使能EDMA3通道19的完成中断,在5次事件后传完,产生EDMA3中断;然后在EDMA3中断服务程序中清除事件19的事件标志(ECR)。
结果是EDMA3中的传输不正常。
二、使能EDMA3通道19的完成中断,在5次事件后传完,产生EDMA3中断;然后在EDMA3中断服务程序中disable事件19(EECR)。
由于ADS8556在每次转换完成后都要DSP发送数据过去,才会有数据回传,所以我不得不在每次转换完成后(即GPIO BANK3中断服务程序中)又enable事件19(EESR)。
这样的结果也是EDMA3中的传输不正常。
最后是我通过响应最后一次事件19(即第6次事件19),然后让它不向SPI1发送数据,而是完成其他一次EDMA3传输。
这样就不会一直产生SPI1发送中断,也就不会连续的发送控制字给ADS8556,而是每次转换完成后才发送一回控制字。
PaRAM19:
EDMA3CC_PARAMSET->PaRAMSet[19].SRC = (((uint32_t)&AD_Parameter) + 2);
EDMA3CC_PARAMSET->PaRAMSet[19].DST = (uint32_t)&SPI1_SPIDAT1;
EDMA3CC_PARAMSET->PaRAMSet[19].BCNTRLD_LINK = (0 << 16) | 0x4FA0;
PaRAM125:
EDMA3CC_PARAMSET->PaRAMSet[125].SRC = (((uint32_t)&AD_Parameter));
EDMA3CC_PARAMSET->PaRAMSet[125].DST = (uint32_t)&AD_offset;
EDMA3CC_PARAMSET->PaRAMSet[125].BCNTRLD_LINK = (0 << 16) | 0x4F80;
PaRAM124:
EDMA3CC_PARAMSET->PaRAMSet[124].SRC = (((uint32_t)&AD_Parameter) + 2);
EDMA3CC_PARAMSET->PaRAMSet[124].DST = (uint32_t)&SPI1_SPIDAT1;
EDMA3CC_PARAMSET->PaRAMSet[124].BCNTRLD_LINK = (0 << 16) | 0x4FA0;
这样设置(虽然感觉有点不正规),但是EDMA3的传输正常了,ADS8556的时序也正常了。
SDI引脚的波形(控制字不是连续不停的发送了)
FS的波形也正常:
问题终于是解决了!