This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28388D: 关于SPI片选信号的疑问

Part Number: TMS320F28388D
Other Parts Discussed in Thread: DAC81416

设计控制一颗DAC,使用了SPI外设,但是没有注意DAC的读写数据都是24bit为单位的,有寄存器地址和16位数据组成

由于SPI外设的buf大小为16bit,我的理解是SPI外设在完成16bit数据传输后,会将nSTE管脚拉高,这样的话对于我目前的DAC控制就有问题了

所以我现在配置的是SPI的8bit模式,每次向buf里写入8bit数据,通过查询判断是否可以写入,完成一次数据传输需要写入3次。

请问我可以将nSTE管脚配置为GPIO模式,按照需要控制其合适为高吗?

不希望SPI外设在完成设定长度的数据传输后,将nSTE信号拉高,我是希望传输完3个字节之后将其拉高

  • 实际调试了一下 这样是可以的

    下面是IO配置:

    //
    // InitSpiaGpio - Initialize SPIA GPIOs
    //
    void InitSpiaGpio()
    {
    EALLOW;

    //
    // Enable internal pull-up for the selected pins
    //
    // Pull-ups can be enabled or disabled by the user.
    // This will enable the pullups for the specified pins.
    // Comment out other unwanted lines.
    //
    GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0; // Enable pull-up on GPIO58 (SPISIMOA)
    GpioCtrlRegs.GPBPUD.bit.GPIO59 = 0; // Enable pull-up on GPIO59 (SPISOMIA)
    GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0; // Enable pull-up on GPIO18 (SPICLKA)
    GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0; // Enable pull-up on GPIO19 (SPISTEA)

    //
    // Set qualification for selected pins to asynch only
    //
    // This will select asynch (no qualification) for the selected pins.
    // Comment out other unwanted lines.
    //
    //GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; // Asynch input GPIO58 (SPISIMOA)
    GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3; // Asynch input GPIO59 (SPISOMIA)
    //GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; // Asynch input GPIO60 (SPICLKA)
    //GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3; // Asynch input GPIO61 (SPISTEA)

    //
    //Configure SPI-A pins using GPIO regs
    //
    // This specifies which of the possible GPIO pins will be SPI functional
    // pins.
    // Comment out other unwanted lines.
    //
    GpioCtrlRegs.GPBGMUX2.bit.GPIO58 = 3; // Set Group Mux
    GpioCtrlRegs.GPBGMUX2.bit.GPIO59 = 3; // Set Group Mux
    GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3; // Set Group Mux
    GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3; // Configure GPIO58 as SPISIMOA
    GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 3; // Configure GPIO58 as SPISOMIA
    GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3; // Configure GPIO58 as SPICLKA

    GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 0;
    GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0;
    GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;
    GpioDataRegs.GPBSET.bit.GPIO61 = 1;

    EDIS;
    }

    我使用28379D的Launchpad控制DAC81416