理论教育 SPI接口在应用中的实例及应用技巧

SPI接口在应用中的实例及应用技巧

时间:2023-06-15 理论教育 版权反馈
【摘要】:SPI可以用于DSP芯片与外部设备或其他控制器之间的通信,通过SPI可以构成多机通信系统,还可以扩展芯片。TLC5620的CLK引脚与28035的SPICLK引脚相对应,二者共用串行时钟。数据从SPIDAT的最高位依次发送出去。查询方式查询SPI中断标志位SPI INT FLAG是否为1,若为1,则数据发送完毕,清除中断标志。由于TLC5620的通信最大波特率为1MHz,所以可以将28035 SPI的波特率设置为1 MHz。例11-2 SPI模块采用内部循环返回自测模式自测试。

SPI接口在应用中的实例及应用技巧

SPI可以用于DSP芯片与外部设备或其他控制器之间的通信,通过SPI可以构成多机通信系统,还可以扩展芯片。SPI总线用于芯片扩展,尤其适合没有并行总线扩展能力的芯片,可以推动“单片方案”的应用,使DSP芯片引脚可以设计得更少,系统结构更加简单可靠。串行总线接口扩展多用于传输速率不高的场合。

对于没有SPI接口的DSP或单片机芯片,可以使用软件模拟SPI的总线操作,包括串行时钟、数据输入和输出。

许多芯片如D-A、A-D、移位寄存器、显示控制驱动器、日历时钟、I/O、E2PROM以及语音电路等都可以采用SPI接口扩展。例如,SPI接口D-A转换芯片:8位D-A转换芯片TLC5620、10位电压输出型D-A转换器TLC5615、12位D-A转换器MAX5742、MAX5121、13位D-A转换器MAX5153及16位D-A转换器DAC714等。再如SPI接口的8位逐次逼近A-D转换器TLC549、E2PROM芯片MCM2814、键盘显示接口芯片CH451、8位7段数码管驱动芯片MAX7219及数字温度传感器ADT7301等。

例11-1 通过SPI接口扩展D-A转换器TLC5620。

(1)TLC5620 D-A转换芯片的特点

TI公司的TLC5620为SPI串行接口的4路8位D-A转换芯片,具有上电复位功能。工作频率为1MHz。采用+5V电源,可产生一倍或二倍于基准电压与地之间的电压。芯片为14引脚表贴封装,如图11-8所示。引脚的功能见表11-3。

978-7-111-57271-8-Chapter11-28.jpg

图11-8 TLC5620的引脚

11-3 TLC5620引脚功能说明

978-7-111-57271-8-Chapter11-29.jpg

(2)串行数据输入格式和输出电压

数据输入共有11位(A1 A0 RNG D7 D6 D5 D4 D3 D2 D1 D0),其中A1 A0的组合状态(00,01,10,11)用来选择通道(A,B,C,D),RNG(Range)选择DAC输出范围,D7~D0位为数据位。当RNG位为0时,输出范围在所加的基准电压与GND之间;当RNG位为1时,输出范围在所加基准电压的两倍与GND之间。上电时,DAC被复位至代码0,此时D-A输出为0V。

每一通道输出电压Vo由下式计算:

Vo=REF×(CODE/256)×(1+RNG)

式中,REF为相应通道的基准电压;CODE是从数据位D7~D0计算出的十进制数;RNG取0或1。

(3)数据接口(www.daowen.com)

串行数据从数据输入端DATA输入时,最高有效位在前。有两种方式控制TLC5620输出电压的更新:LOAD引脚控制更新和LDAC引脚控制更新。本例采用LOAD引脚控制更新方式,此时,LDAC引脚需接低电平。开始控制LOAD为高电平,数据在CLK每一下降沿由时钟同步从DATA引脚输入。一旦所有的数据传送完毕,控制LOAD引脚跳至低电平,所选择的D-A通道的输出电压即得到更新。

(4)DSP与TLC5620的接口电路

DSP与D-A转换芯片TLC5620的接口电路如图11-9所示。由于TLC5620内部的D-A输出已经有了电压跟随电路,所以可以不用外加电压跟随器。28035 DSP在引脚SPISIMO上输出数据,与之相对应的是TLC5620的DATA数据接收引脚。TLC5620的CLK引脚与28035的SPICLK引脚相对应,二者共用串行时钟。由28035的引脚GPIO26控制TLC5620的LOAD引脚电平,以锁存数据、更新输出电压。4路基准电压都采用3.3V电源电压的二分压即1.6V,必要时可采用专门的基准电压。

978-7-111-57271-8-Chapter11-30.jpg

图11-9 DSP与TLC5620的接口电路

(5)软件设计

28035的CPU频率为60MHz,为主机工作方式,发送数据。当SPICTL的使能发送允许位TALK位为1时,写数据到SPIDAT或SPITXBUF就启动了SPISIMO引脚的数据发送。数据从SPIDAT的最高位依次发送出去。在数据移出SPIDAT时,将置位SPI的接口状态寄存器SPISTS的中断标志位SPI INT FLAG。若中断使能,将发生中断事件。28035发送数据的状态可以用两种方法检测:一是中断方式,二是查询方式。查询方式查询SPI中断标志位SPI INT FLAG是否为1,若为1,则数据发送完毕,清除中断标志。

由于TLC5620的通信最大波特率为1MHz,所以可以将28035 SPI的波特率设置为1 MHz。C语言程序如下。

978-7-111-57271-8-Chapter11-31.jpg

978-7-111-57271-8-Chapter11-32.jpg

例11-2 SPI模块采用内部循环返回自测模式自测试。不断重复发送的数据为0000,0001,0002,....FFFE,FFFF,接收的数据与发送的数据进行比较。

978-7-111-57271-8-Chapter11-33.jpg

978-7-111-57271-8-Chapter11-34.jpg

978-7-111-57271-8-Chapter11-35.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈