12位的DAC模块可以选择DACREF_1和DACREF_2其中之一作为参考电压,当DAC使能后,可以对在 DACDAT[11:0]中或DAC数据缓冲区内的数据,转换成模拟输出电压,范围为Vin/4096~Vin。
当DAC使能而buffer没有使能时,DAC模块总是对DAT0内的数据进行转换。 当DAC和buffer都使能时,DAC模块才对buffer内的数据进行转换,当硬件或软件触发发生时,buffer 指针指向下一个字。page129上看到有PDB的输出可以作为DAC的触发源。
数据buffer可配置工作在正常模式,摇摆模式和一次扫描模式,当模式切换时,读指针不改变,通过写 在DACBFRP内的C2寄存器,可以设置读指针的值,范围为0~DACBFUP。
对于DAC buffer,涉及到几个中断和标志位。 当读指针到达buffer的上限时(DACBFRP = DACBFUP),读指针底部位置标志位置位, 当读指针到达buffer的起始位置0时,读指针起始位置标志位置位。 当读指针到达水印选择位域所定义的位置时,水印标志位置位。 水印选择(DACBFWM)可以用来设置,在读指针距离buffer上限 1~4个字时产生中断。
buffer的正常模式: 此模式是默认的工作模式,buffer以环形buffer形式工作,读指针在每次触发时增加1,当到达上限 时在下一次触发时归0。
buffer的摇摆模式: 与正常模式类似,只是当读指针到达上限时,不归0,而是减1。
buffer的一次扫描模式: 当读指针到达上限时,会停在这里,若读指针被重置到其他位置,当再次到达上限时,还会 停在这里。
在page895上讲的DACx_DATH中,看到"当DAC buffer使能后,DATA[11:0]被映射到buffer中"。
【问题:当使用buffer时,肯定要设置DACBFRP(read pointer)和DACBFUP(upper limit),前者的取值范围是0~DACBFUP,后者是0~buffer的大小-1,那这个最大值是个地址值吧,如何确定其值呢?】 |