ADC采用的是库函数版本配置,P65x与377在AD的库函数ADC_setupSOC()没有差异,可直接搬运使用。但由于P65x少了个AD模块,AD口数量反而增多,也就是说每个模块的AD数量变多了。
通过开发板,测试ADCIN5通道采样情况(对3V进行采样,采用外部电压参考,精度为12位。采样的结果放在result13寄存器。)
从仿真结果来看,该端口并无数值。
调试思路:第一步:先检查中断是否产生?
每个ADC模块有4个可配置的ADC中断。这些中断可以由16个EOC信号中的任何一个触发。可以直接读取每个ADCINT的标志位,以确定相关联的SOC是否完成或者中断是否可以传递到PIE。每个ADCINT标志还具有相应的ADCINTxRESULT标志。
从以上两图可以看到中断是正常产生的。
第二步:由于是EPWM6SOCA触发采样,检查触发源是否正常
检查触发源可通过ETFLG寄存器查看。
可以看到触发源也是正常的,已经产生了触发脉冲。
整个流程没问题,那么可能是在采样口出了问题。翻看技术手册GPIO口时发现:
相较于之前的377,采样除了固有的AIO类型口,在p65x上又多了一种AGPIO的功能口。AIO口指的是只能输入,不能输出,默认是AD口。AGPIO指的是既能输入又能输出的口,但默认没有连接,若用到端口,需要配置。
因此在采样时,若是采样口也可配置为GPIO口的话,那么这个采样口就需要配置GPIO的属性,例如A7采样口,可用函数GPIO_setAnalogMode配置,否则端口没有采样的功能。同理,若是采样口只有采样功能,例如A1口,这样的口就不需要配置,芯片默认是采样口。
从上图也可以发现,ADCIN5采样口(即C5)是具有AGPIO功能,因此需要配置此口。
但也为了作对比,先对A4口(结果寄存器15)进行采样,因为从上图可以看出,A4口是默认的采样口,不用配置在理论上也能采出数据。
确实,4095对应3V,采样正确!
现在对AGPIO口进行配置,通过函数PinMux_init();进行配置,这个函数是通过TI的Sysconfig生成的。
此时再测ADCIN5通道的数据,数据正常。因此,在具有AGPIO的芯片上要加上相应的配置函数。