dac104s085芯片驱动讲解

dac104s085芯片驱动讲解

dac104s085芯片时10位的4路dac数据输出芯片
一般应用于将数字信号转换为模拟信号,通常用于波形输出

驱动分析
1:拿到芯片手册一般做的时浏览芯片手册,把重要信息标志:一般就是涉及到与主控芯片时有几种通信方式
各种通信方式的频率,位数,校验,通信时序,通信波形等

我们从手册上得知,此芯片适合spi,Qspi通信方式,频率可以最大达到40Mhz左右,最低要求25Mhz,基准电压要求2.7到3.6V之间,是具有地址控制位的10位DAC芯片(最低两位不用)

dac104s085芯片驱动讲解_第1张图片

 

2:spi通信时序:

从图中可以看出芯片驱动的方式是spi,然后对应的是在第一个时钟采集,下降沿有效,对应位cpol=0;cpha =1

dac104s085芯片驱动讲解_第2张图片
3:看芯片的16位数据中各自代表什么

dac104s085芯片驱动讲解_第3张图片

从图中可以看到,芯片16位中最高4位为地址位和通道选择位

A1  A0 代表dac通道:
0   0   DACA
0   1   DACB
1   0   DACC
1   1   DACD
 
P1  P0  代表是否输出
0   0   向特定的通道写值但不输出
0   1   向特定的通道写值并输出
1   0   向所有的通道写值并输出
1   1   关闭所有的通道输出

4:在stm32中的使用

void spicontrol(void)
{
    spi_parameter_struct spi_init_struct;
  
    spi_init_struct.frame_size = SPI_FRAMESIZE_16BIT;
       
    spi_init_struct.prescale = SPI_PSC_4;   //主控芯片120M。所以这里是30M
    spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;
    spi_init_struct.endian = SPI_ENDIAN_MSB;
    spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;
    spi_init_struct.device_mode = SPI_MASTER;
    spi_init_struct.nss = SPI_NSS_SOFT;

    spi_init(spi_periph, &spi_init_struct);

    spi_crc_off(spi_periph);
    spi_enable(spi_periph);
}

5:总结,根据上述知识便可控制dac输出了

例子:
dac104s085_write_data(data,length);//向dac通道输出数值

你可能感兴趣的:(dac104s085,dac芯片,芯片驱动)