我想使用16路AD转换,但是发现可能无法从内部启动ATD
初始化程序入下
ATD0CTL1 = 0x00; /*禁止外部触发,8位精度,采样前不充电,无外部触发通道*/
ATD0CTL2 = 0x40; /*ATD快速清除标志位,禁止外部触发,中断禁止*/
ATD0CTL3 = 0xA0; /*右端对齐,每次转换16个序列,对应结果寄存器,冻结模式下继续转换*/
ATD0CTL4 = 0x01; /*采样时间为4个AD转换周期,采样频率为总线频率的1/10*/
ATD0CTL5 = 0x30; /*多通道转换,扫描模式,不进行特别通道转换,首先转换AN0*/
然后等待转换结束
while(!ATD0STAT0_SCF);
结果AD转换始终不结束。怀疑压根ATD转换没开始
DG128中在ATDCTL2中专门有一位负责启动ATD转换,但是我查遍了XS128的手册,没找打相关的控制位
请问这个该怎么解决?
如果禁用外部触发,好像向CTL5写控制字的时候就会启动转换。
你把队列改成小于16的数,然后用调试模式直接在寄存器看一下STAT0的后四位,那个可能是下一个将要转换的通道,你看他变没变,试试吧,我也是刚开始学。
MS没用
我要改成外部触发试试
DG128是10位的,XS128是12位的,寄存器设置等都发生了变化,这点儿要注意哦,你去我的BK看看,有着两个片子的AD寄存器比较
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |