主题中讨论的其他器件: ADS8694、 C2000WARE
尊敬的人们:
请、如果有人能就此向我提供建议、那将会很好:
我尝试 通过由 TMS320F28379D Launchpad 控制的 SPI 与 ADS8694 4通道18位 ADC 进行通信。
软件是 example_2837xD_SPI_dma.c (C2000Ware_1_00_05_00)的改编版本
使用回送设置、一切都运行良好。 但在"现实生活"中、我得到的只是 SDO 线路上的一个、这无关紧要、我发送到 ADC 的内容。
所有信号都按预期工作、我唯一更改的是 SPI 不同线路的引脚。
我使用以下配置:
空 InitSpi (空)
{
SpiaRegs.SPICCR.bit.SPISWRESET = 0;
SpiaRegs.SPICCR.bit.CLKPOLARITY = 0;
SpiaRegs.SPICCR.bit.SPICHAR =(16-1);
SpiaRegs.SPICCR.bit.SPILBK = 0;
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1;
SpiaRegs.SPICTL.bit.TALK = 1;
SpiaRegs.SPICTL.bit.CLK_PHASE = 0;
SpiaRegs.SPICTL.bit.SPIINTENA=0;
SpiaRegs.SPIBRR.bit.SPI_BIT_RATE = SPIA_BRR;
SpiaRegs.SPIPRI.bit.FREE = 1;
SpiaRegs.SPICCR.bit.SPISWRESET = 1;
}
空 InitSpiaGpio()
{
EALLOW;
GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0; //启用 GPIO58上的上拉电阻器(SPISIMOA)
GpioCtrlRegs.GPBPUD.bit.GPIO59 = 0; //启用 GPIO59上的上拉电阻器(SPISOMIA)
GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0; //启用 GPIO60上拉(SPICLKA)
GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0; //启用 GPIO61上的上拉电阻器(SPISTEA)
GpioCtrlRegs.GPDPUD.bit.GPIO111 = 0; //启用 GPIO111上的上拉电阻(RST)
GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; //异步输入 GPIO58 (SPISIMOA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3; //异步输入 GPIO59 (SPISOMIA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; //异步输入 GPIO60 (SPICLKA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3; //异步输入 GPIO61 (SPISTEA)
GpioCtrlRegs.GPBGMUX2.bit.GPIO58 = 3; //将 GPIO58配置为 SPISIMOA
GpioCtrlRegs.GPBGMUX2.bit.GPIO59 = 3; //将 GPIO59配置为 SPISOMIA
GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3; //将 GPIO60配置为 SPICLKA
GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 3; //将 GPIO61配置为 SPISTEA
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3; //将 GPIO58配置为 SPISIMOA
GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 3; //将 GPIO59配置为 SPISOMIA
GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3; //将 GPIO60配置为 SPICLKA
GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3; //将 GPIO61配置为 SPISTEA
GpioCtrlRegs.GPDGMUX1.bit.GPIO111 = 0; // GPIO111 = GPIO111 -用于 ADS8694的硬件复位引脚
GpioCtrlRegs.GPDMUX1.bit.GPIO111 = 0; // GPIO111 = GPIO111
GpioCtrlRegs.GPDDIR.bit.GPIO111 = 1; //将 GPIO111配置为输出
GpioDataRegs.GPDSET.BIPO111 = 1; //将 GPIO111设置为高电平!!!! 以激活 ADS8694
EDIS;
}
我的 DMA 设置为:
#define BURST 7
#define 传输 4.
#define FIFO_LVL 8.
我将发送如下数据:
uint16 sdata0[36]={1、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0}; //这是命令示例。
我的 RDATA[]数组在环回方式上看起来确实像 sdata[]数组,但如果我设置 SpiaRegs.SPICCR.bit.SPILBK = 0,RDATA 看起来像{ 65535,65535,65535等......}
除了已经绝望之外,我还做了什么错?
谨致问候、
Gustavo