欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dac104s085芯片驱动讲解

程序员文章站 2022-06-04 15:02:45
...

dac104s085芯片驱动讲解

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

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

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

dac104s085芯片驱动讲解

 

2:spi通信时序:

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

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

dac104s085芯片驱动讲解

dac104s085芯片驱动讲解

从图中可以看到,芯片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