DAC芯片——TPC219x驱动验证

1. 前言

TPC219x 是一款具有 16、14 和 12 位分辨率的高精度 DAC,所有引脚均兼容。

该器件包括一个 2.5V 内部基准,可用于降低系统复杂性。

可以选择多个增益选项,以提供不同的满量程输出电压,1.25V、2.5V 和 5V。

该器件在单个模拟电源下工作,并具有单独的 VIO 电源用于数字通信。通信通过串行接口进行,并且可以在宽范围 VIO 电源电压下工作。

集成了一个上电复位电路,以将 DAC 输出保持在零电平或中间电平。

介绍源自3peak官网介绍;使用的TPC2190是一款16位DAC输出芯片;

2. SPI及引脚配置

截取 bit23 的位中心,可以看到在bit23的位中心,CS片选引脚为电平;SCLK时钟线正处在下降沿,并且是在第一个沿,再细细观察一下,可以看到时钟线空闲时为高电平,由此可以得出配置的SPI的时钟极性和相位;至于数据传输脚的FSDO,是该芯片的一个使数据提前半个时钟周期开始读取的标志,可以用或者不用,需要去配置芯片的寄存器;
在这里插入图片描述

数据位数配置则要查看它的数据帧结构;在开启CRC时读和写的数据长度都是1帧数据4字节,在关闭CRC时,数据帧结构则是1帧数据3个字节;

那么,在开启CRC的情况下,可以将SPI数据长度配置为16位,关闭CRC时配为8位,当然,全凭个人喜好即可;
在这里插入图片描述

接下来就能得到如下配置,AT32的配置工具做了个示意图,比较了一下和TPC219x的数据传输时序是一致的;
在这里插入图片描述

void gpio_and_spi1_config()
{
   
	gpio_init_type gpio_init_struct;
	spi_init_type spi_init_struct;   

	/* enable gpioa periph clock */
  	crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE); 
    /* enable spi1 periph clock */
  	crm_periph_clock_enable(CRM_SPI1_PERIPH_CLOCK, TRUE);

	gpio_default_para_init(&gpio_init_struct);  
	
	gpio_bits_reset(GPIOA, GPIO_PINS_4);
  	gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE;
  	gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
	gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
	gpio_init_struct.gpio_pins = GPIO_PINS_4;
	gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
	gpio_init(GPIOA, &gpio_init_struct);
	  
	gpio_default_para_init(&gpio_init_struct);
	spi_default_para_init(&spi_init_struct);
	
	gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE5, GPIO_MUX_0);
 
	/* configure the SCK pin */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT_H2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值