Other Parts Discussed in Thread: AFE031
我们上一次在这里咨询了如何对AFE030/AFE031进行软件初始化(e2echina.ti.com/.../afe031-spi),可是初始化后的AFE030并没有表现出所期待的结果。我们确信初始化数据已经从MCU(MKE02Z64)通过其SPI接口发出(参见后面的波形图)。我们的目的是配置AFE030使用Two-Wire机制工作在PWM模式,但是
- 将MCU的一个串口输出Tx接E_Tx_IN, MCU产生的一个100KHz的PWM方波接至E_Tx_CLK,但Two-Wire的Tx功能块没有观察到E_Tx_OUT与门输出。
- 将上述PWM方波接至Tx_PGA_IN后,Tx_PGA_OUT没有波形输出,说明DAC并没有被禁止掉。
- 将上述PWM方波接至Tx_F_IN1后在Tx_F_OUT可以看到幅度缩小了的PWM方波,但是PA_OUT没有看到任何幅度的波形输出。
功能连接示意图如下所示:
注:作为示意图,此图没有画Tx_F_OUT和PA_IN之间的电容(如需看完整的原理图,可以稍后再补充)
软件初始化内容如下:
- 禁止DAC:通过MCU的I/O端口对AFE030的Pin7置零
- ENABLE1寄存器:对PA、TX、RX、ERX、ETX等位置1,其它位置零,应发送数据为0x011F
- ENABLE2寄存器:对ZC、PA_OUT等位置1,其它位置零,应发送数据为0x0309
- CONTROL1寄存器:对所有数据位置零,应发送数据为 0x0400(其中4为寄存器地址)
- CONTROL2寄存器:对T_FLAG、I_FLAG等位置1,其它位置零,应发送数据为0x0560
软件运行打印日志如下:
括号内的数字是寄存器地址,后面的16进制数据为MCU发往SPI-DO总线上的数据,MCU发送成功后的中断通知程序中打印“SPI数据发送成功”信息。
该MCU提供有2种类型的built-in的SPI软件及硬件接口并提供了SPI底层驱动程序:SPI_Master和SPI_Slave,我们选择了使用SPI_Master,假设AFE030的SPI是一个Slave SPI。
在开始对AFE030进行初始化之前,程序先对SD和DAC置零,并且在整个初始化过程中保持不变。
出于对数据发送的 endian 的考虑,我们甚至将 16 位 配置数据的字节发送顺序颠倒了一下进行测试,发现无论是高字节在前还是在后都是相同的结果。
由于是第一次接触AFE030和SPI,我们目前无法确定问题究竟是出在哪里。请给予帮助,并预先在此表示感谢。
同时,我们有下面的问题,还请一并解答:
- AFE030 中的SPI 是否如我们假设为一个Slave设计(其中CS信号由MCU的SPI-CS直接连接至AFE030-CS)。
- 两个SPI的SCLK端是否应该连在一起(由MCU自动提供,图上显示是1MHz,无法主动配置选择)。
- 意外的是,我们观察到AFE030的SPI-DOUT数据线上面有数据,而且与配置数据相同,似乎是AFE030对收到的数据做的回应Echo。这个功能好像AFE030的数据手册里面没有进行说明。这反而说明AFE030对配置数据是正确接收到了的。
测试波形:
下面为四次寄存器写入的波形放大图。上方的黄色波形都是AFE030 SPI的DIN引脚的波形,下方的蓝色波形均为SPI的时钟信号SCLK。