一、焊接芯片及其外围电路
总体焊接过程没有出现什么大问题,也算顺利,下一步主要是根据SPI来编写代码,配置该芯片。
焊接之后的PCB如下(手工焊接,比较丑陋,哈哈哈哈)
之后测试了4.096V参考电压和晶振输出,没有出现什么问题:
在这里总结几点:
1.参考电压的电路上0.22Ω电阻买错了,师兄买成了0.22kΩ,而且现在实验室也没有0.22Ω,无奈只好焊接了0Ω电阻,实际出来的参考电压也没有什么大问题,不过建议还是采用推荐的阻值容值进行电路设计。还有就是一些电容,手册说明使用C0G型,那最好严格按照他的要求去选型。
补充:
C0G(也被称为NP0)是一种陶瓷电容器。这里的"C"代表电容器,而"0"表示它是类别1的电容器,这意味着它在温度和电压变化下具有非常稳定的电容值。"G"表示它具有±30 ppm/°C的温度系数。这使得C0G电容器适用于需要在各种工作条件下保持精确和稳定电容值的应用。
X7R:X7R电容器是一种类别2电容器,具有中等的温度稳定性和介电常数。它们通常比C0G电容器具有更高的电容密度,但在温度和电压变化时会产生一些变化。
Y5V:Y5V电容器是一种类别2电容器,具有相对较高的电容密度,但它们在温度和电压变化时的电容值会发生较大变化。它们不适合需要精确电容值的应用。
Z5U:Z5U电容器是一种类别2电容器,通常具有较高的电容密度,但与Y5V类似,在温度和电压变化时的电容值也会发生较大变化。
X5R:X5R电容器是一种介于C0G和X7R之间的类型,具有介于它们之间的温度稳定性和电容密度。
VX7R:VX7R电容器是一种变种,它在温度特性上比普通的X7R电容器更稳定。
U2J:U2J电容器具有与C0G电容器相当的稳定性,但具有更高的电容密度。
U2J-Y5V:这是一种结合了U2J稳定性和Y5V电容密度的变种。
2.建议参考电压的P和N端连线还是使用差分布线(我当时没有按照差分布线,对芯片的精度可能会造成一些影响)
3.焊接有源晶振时,最好留出一点锡来好用来测试,一开始焊接完晶振后,测试引脚无输出信号,无奈之下又焊下来,重新焊接了一下,测试无问题。还有就是焊接晶振时要注意引脚的标号(1号引脚焊盘那有一个缺脚,具体还是要仔细看手册说明),不要焊接错了:
二、芯片的SPI介绍
2.1 工作模式
当转换数据准备好时,DRDY断言为低。串行接口是无源的(外设模式),其中串行时钟(SCLK)是一个输入。ADC工作在SPI模式0,其中CPOL = 0和CPHA = 0。在模式0下,SCLK低空闲,数据在SCLK下降沿上更新,在SCLK上升沿上读取。
2.2 DRDY引脚
DRDY是一个低电平有效输出,表示转换数据准备就绪。无论CS的状态如何,DRDY都是活动的。DRDY在SCLK的第一个下降沿上被驱动为高电平,无论是否正在读取数据或输入命令。如下图所示,如果没有检索到数据,DRDY脉冲为8个fCLK周期。
2.3 命令
上面是一些指令的格式,尤其注意下面两条:
rrrr = 寄存器读写命令的起始地址
nnnn = 要读或写的寄存器数- 1。例如,要读写三个寄存器,nnnn = 2
2.3.1 单字节指令
2.3.2 唤醒命令
WAKEUP命令用来退出备用模式,恢复系统正常运行。如果ADC已经上电,则该命令为no operation (NOP)。当退出备用模式时,ADC需要重新同步。
2.3.4 软件断电命令
STANDBY命令进入软件下电模式。ADC通过WAKEUP命令退出软件下电模式。
2.3.5 读取数据
读取转换数据有两种方法:直接读取数据和命令读取数据。
2.3.5.1 直接读取数据
直接读取数据不需要命令,而是在DRDY降低后,只需应用SCLK来读取数据。
读数据直接操作如下图所示。当DRDY低时,取CS低开始读操作。
CS低导致DOUT从三态模式转换到数据MSB的输出。数据在SCLK的上升沿上读取,在SCLK的下降沿上更新。DRDY在SCLK的第一个下降沿返回高值。
读32位数据后DOUT是低的。要在新数据可用之前再次读取相同的数据,请使用RDATA命令。
读取转换数据时保持DIN低。如果发送了RDATA(读转换数据)或RREG(读寄存器数据)命令,输出数据会因该命令而中断。如果在读取操作期间DRDY降低,则除非读取至少三个字节的旧数据,否则新数据将丢失。
从上面介绍可以看出,写代码时读取数据的操作需要如下步骤:判断DRDY引脚,若为低电平—>延时1us,拉低CS引脚—>从MISO引脚读取数据。注意,在上述过程中不要对MOSI引脚有任何操作(即不能写指令)。
2.3.5.2 读取转换数据命令
RDATA命令用于在同一转换周期内重新读取数据或读取被读寄存器命令中断的数据。在这两种情况下,DRDY都是高的,因为DRDY在前一个操作的第一个SCLK上被驱动为高。如果DRDY值高,第一个输出字节是0,后面跟着data。如果为低,则第一个输出字节是转换数据的字节1,它将为输出字节2重新启动。
2.3.5.3 读寄存器指令
该命令由两个字节组成,后面跟着指定寄存器字节数的输出。ADC自动将地址递增到命令的第2字节中指定的寄存器数。递增地址不换行。该命令的第一个字节是添加到寄存器起始地址的操作码,第二个字节是要读取的寄存器数- 1。
•第一个命令字节:0010 rrrr,其中rrrr是起始寄存器地址
•第二个命令字节:0000 nnnn,其中nnnn是要读取的寄存器数减去1
下图给出了一个从寄存器地址01h开始的三寄存器读操作的示例。第一个寄存器数据出现在DOUT上,位于SCLK的第16个下降沿。数据被锁存在SCLK的上升沿上。
2.3.5.4 写寄存器指令
该命令是两个字节,后面跟着要写入的指定寄存器字节数。ADC自动将地址递增到命令中指定的寄存器数。递增地址不换行。该命令的第一个字节是添加到寄存器起始地址的操作码,第二个字节是要写入的寄存器数- 1。
•第一个命令字节:0100 rrrr,其中rrrr是第一个寄存器的起始地址。
•第二个命令字节:0000 nnnn,其中nnnn是要写入的寄存器数- 1。
数据字节:取决于指定的寄存器数。
2.4 寄存器映射
下面给出一些寄存器的主要位,目前我还没有进行实际的配置测试,后学继续更新(感冒了,今晚先回宿舍休息一晚)。
2.4.1 设备ID,同步寄存器(00h)
2.4.2 配置寄存器0(01h)
2.4.3 配置寄存器1(02h)
2.4.4 高通滤波器寄存器(03h,04h)
2.4.5 偏移校正寄存器(05h,06h,07h)
2.4.6 增益校准寄存器(08h,09h,0Ah)
2.4.7 数字输入/输出寄存器(0Bh)
2.4.8 采样率转换器寄存器(0Ch,0Dh)
三、往期回顾
项目进展(一)-晶振正常输出、焊接驱动芯片、查找芯片手册并学习
项目进展(二)-配置MCT8316ZR芯片,主要学习如何根据数据手册配置外设等
项目进展(三)-电机驱动起来了,发现了很多关键点,也遇到了一些低级错误
项目进展(四)-双电机均可驱动,配置模拟SPI,调平仪功能初步实现!
项目进展(五)-修复PCB电路板,学习32位ADC芯片ADS1285
项目进展(六)-继续学习32位ADC芯片ADS1285