记录时间2022910
- 前言
离开上个公司,将在公司使用过的几个接口和几个片子控制过程记录一下,以后可能用不到,也有可能会用得到,留下以后可以复用。。。。。。
一、dac3152
先说一下这个,这个芯片用我上上个公司的一个老领导的话就是–这很简单。不需要配置芯片内的寄存器,直接控制输出就行。。。。。。
对于FPGA端只需要控制输出DACCLP/N和N0P/N-D9PN,即差分时钟和10bit的差分数据,输出为IOUTAP/N和IOUTBP/B两个通道。
控制时序:
DAC3152芯片可以控制两个输出通道,只需要在上升沿发送B通道的电压数据,下降沿发送A通道的电压数据,因为是10bit并行输入数据,所以控制餐数范围0-1023,当然也可以AB两个通道输出相同的电压,即上升沿下降沿发送数据一致我用的就是两通道输出相同的电压。
代码:
always @(posedge clk_in or negedge rst_in_n)
begin
if(!rst_in_n)
dac_d_buf <= 0 ;
else if(dac_transfer_i_raising)
dac_d_buf <= dac_wdata_i[9:0] ;//modle2 512
end
assign dac_d = dac_d_buf ;
assign dac_clk = clk_in ;
输入时钟的频率决定着DA芯片输出电压最大频率可以达到500MHz,我只输出100MHz时钟。
时钟不变,数据改变,可以用万用表测试输出电压。
用万用便测试输出电压:AB两个通道实际输出有差别。
二、dac7714
这个芯片可以产生四路DA信号,VoutA、VoutB、VoutC、VoutD,通道选择由SPI接口配置
需要配置的管脚除了SPI的三线外,还有三个管脚需要配置
**LOADDACS/**低有效,低电平改变输出电压,高电平锁存各通道输出电压,RESET/ 复位信号,低有效,RESETSEL设置复位后输出的电压值,0表示复位后输出控制字000对应的电压值,1表示复位后输出控制字800对应的电压值。
根据时序图可知,需要通过SPI向芯片写入16bit数据便可以完成配置,有效电压控制数据为D11-D0共12Bit,A1和A0则用来选择控制输出哪路DA输出,具体控制列表如下:
SPI程序只需要配置时钟上升沿发送数据,下降沿采样即可。(程序简单就不放了。。。。)