Posted by windingway on 六月 6, 2010
浮躁的时候就要找点确切的事情干干.
这个xx决定造个正弦波出来- -(老是读不对,弦(xian))
嗯哪,用pwm好麻烦(⊙o⊙)…,找到之前买的FPGA扩展板上的一片DAC,TLC5620.
TLC5620,德州仪器出品8bit,4通道DAC,可为每通道单独设置参考电压,这里用通道A,参考电压=Vcc=5V.
先写个程序让DAC从0线性跑向5V,然后再跑回来,这样就是三角波了.这个好办,看好时序,然后让DAC的D值从0++到255,然后再从255–到0.
正弦该怎么搞呢,sin(0°)=0,sin(90°)=1.把之间的值折算到0~255的范围,也就是D=255*sinα咯.对头,得先整个正弦表,正弦表好搞,直接在Google里搜索sin table从NASA那里得到一份.不过是图片,难道还得手动输入?貌似WPS表格有公式的吧,不过表格的操作只在大学一年级的时候还记得,现在早忘干净啦.试着弄了一下,里面的=sin()是弧度制的..好吧,让A列=1,2,3…90(角度);B列=An*pi()/180(弧度);C列=sin(Bn)(正弦值).OK了,不过还得四舍五入到整数,这里面有int函数,直接抛弃小数取整,恩,四舍五不入.上网搜索下,有round函数round(number,期待小数位数),这里显然期待小数位数=0.那么D列=round(Cn,0).好了,把D列做成数组sin_table[91]就成啦.
不过输出的正弦只有0-180°的一二象限的非负值,想要完整的正弦值,还得有反相电路帮忙才行.