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.

[参考译文] CCS/CC3200-LAUNCHXL:SPI 主设备(TMS570LS0432)-从设备(CC3200-LAUNCHXL)通信

Guru**** 2394305 points
Other Parts Discussed in Thread: TMS570LS0432, CC3200

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/791223/ccs-cc3200-launchxl-spi-master-tms570ls0432---slave-cc3200-launchxl-communication

器件型号:CC3200-LAUNCHXL
主题中讨论的其他器件:TMS570LS0432CC3200

工具/软件:Code Composer Studio

您好!  

我使用 TMS570LS0432板通过 UART 从传感器获取数据、并希望使用 CC3200在 AWS IOT 上上传数据

为了将数据从 TMS570LS0432 传输到 CC3200 、我使用的是 SPI 通信。

我能够   使用 SPI 在两个 TMS570LS0432电路板之间进行通信。

我正在 为 CC3200使用 SPI_DEMO 示例代码、但无法成功

引脚连接:

Mater (SPI1-TMS570LS0432)                从器件(CC3200)

J1.7 -> SPI1CLK            P1.7 -> SPICLK
J10.16 -> SPI1nCS[0]        P2.3 -> SPICS
J2.6 --> SPI1SIMO           P2.6 --> SPISIMO
J2.7 --> SPI1SOMI           P2.7 --> SPISOMI

J10.4 -> GND              P2.1 --> GND

主器件发送16位数据、波特率1000kHz 我连接主器件信号发送信号。

在 SPI_DEMO CC3200示例代码中,我将波特率从100K 更改为1000K Hz,并在 MAP_SPIConfigSetExpClk ()函数 SPI_WL_8中使用 SPI_WL_16

void SlaveMain()
{
//初始化消息
memcpy (g_ucTxBuff、slave_MSG、sizeof (slave_MSG));

//设置 Tx 缓冲区索引
ucTxBuffNdx=0;
ucRxBuffNdx=0;

//重置 SPI
MAP_SPIReset (GSPI_base);

//配置 SPI 接口
MAP_SPIConfigSetExpClk (GSPI_base、MAP_PRCMPeripheralClockGet (PRCM_GSPI)、
SPI_IF_bit_rate、SPI_MODE_SLAVE、SPI_SUB_MODE_0、
(SPI_HW_CTRL_CS |
SPI_4PIN_MODE |
SPI_Turbo_off |
SPI_CS_ACTIVEHIGH |
SPI_WL_16));

//寄存器中断处理程序
MAP_SPIIntRegister (GSPI_base、SlaveIntHandler);

//启用中断
MAP_SPIIntEnable (GSPI_base、SPI_INT_RX_FULL | SPI_INT_TX_EMPTY);

//启用 SPI 进行通信
MAP_SPIEnable (GSPI_BASE);

// UART 上的打印模式
消息(“从模式中启用 SPI 接口”\n\n\r 接收:“);
} 

请任何人就此提供帮助。

谢谢、此致、

耶特

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更新:  

    我能够通过 SPI 在 CC3200 (从设备)和 TMS570LS0432 (主设备)之间进行通信。

    但我正在接收除主器件发送的值以外的其他值。

    主板在 接收端2147844101 (10000000000001011000000000000101)发送0x000A (0b 0000 0000 1011)  

    静态空 SlaveIntHandler()
    {
    unsigned long ulRecvData;
    unsigned long ulStatus;
    
    ulStatus = MAP_SPIIntStatus (GSPI_base、true);
    
    MAP_SPIIntClear (GSPI_base、SPI_INT_RX_FULLE|SPI_INT_TX_EMPTY);
    
    
    IF (ulStatus 和 SPI_INT_RX_FULL)
    {
    MAP_SPIDataGetNonBlocking (GSPI_base、&ulRecvData);
    G_ucTxBuff[ucRxBuffNdx%TR_buff_size]= ulRecvData;
    报告("%Lu"、ulRecvData);
    ucRxBuffNdx++;
    }
    } 

    谢谢、此致、

    耶特·P

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通过 ulRecvData 位筛选解决了 SPI 数据接收问题。

    但是、当主器件在接收端发送4个16位数据{1、2、3、4}时


    Mater   从属设备
    1         0
    2.         1
    3.         2.
    4.         3.

    1         4.
    2.         1
    3.         2.
    4.         3.


    1         4.
    2.         1
    3.         2.
    4.         3.


    在从器件(CC3200)中、主器件发送的最后数据显示为下一个周期中的第一个数据。

    谢谢、此致、
    耶特·P

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jeet、

    尝试在 SPI 接口配置中将 SPI_SUB_MODE_0更改为 SPI_SUB_MODE_1。

    谢谢、
    Alexis