数字模拟转换控制器(DACC)提供两个独立的模拟输出。DACC支持12位的分辨率,要转换的数据被发送到一个所有通道通用的寄存器中,可配置为外部触发或自由运行模式。 DACC集成了睡眠模式并与PDC通道相连,可降低功耗,减少处理器的干预。用户可以配置DACC时序,如启动时间和刷新周期。 DACC内部框图 电源管理:在使用DACC之前,必须先启用位于功耗管理控制器(PMC)中的DAC控制器时钟。当一个转换请求出现时,DACC就会被激活并且至少一个通道被启用。当没有通道被启用时,DACC会自动停止。 中断源:DACC中断是中断控制器的内部中断源之一,使用DACC中断要求先对中断控制器编程,DACC中断ID是32。 DACC的寄存器,内容也不复杂,最主要的就是模式寄存器的配置 下面我们来使用DACC进行模拟电压的输出测试,OLED扩展板上的BUTTON2按下后输出一个电压值(对应数字为2000),BUTTON3按下后输出另一个电压值。下面开始写代码(对应数字为4095,也就是12位分辨率的最大值),BUTTON1按下后输出一个电压值(对应数字为0)。 我们使用模拟输出通道0测试,通道0在开发板上已经引出了,这个接插件的10脚就是DAC0引脚,板子的正面和反面。边上的电位器用来调节模拟部分的参考值,我目前已经调节到了3.3V。 DACC初始化函数 按键中断处理,对输出打对应数据 实际用万用表测试结果,刚上电引脚输出0V 按下BUTTON2,这个和计算结果差不多,2000/4096*3.3=1.61V 按下BUTTON3,这个最大值为什么不是3.3V,不明白,规格书中也没写如何计算的 按下BUTTON1,这个是0.55V就更纳闷了,哪位知道的话希望指点一下 |