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.

[参考译文] LAUNCHXL-CC3235SF:在 SPI 端口上接收到不正确的数据

Guru**** 2587365 points
Other Parts Discussed in Thread: CC3235SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/811078/launchxl-cc3235sf-incorrect-data-received-on-spi-port

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

您好!

我正在尝试在 SPI 端口上获取正确的数据。 但我正面临一种奇怪的行为。

我正在使用 cc3235作为 SPI 主器件并尝试执行 SPI 事务。

发送的数据始终如预期。 但是、有时通过 SPI 接收数据符合预期

有时收到的数据不正确。

我在逻辑分析仪上检查了数据、数据是正确的、符合预期。  请查看随附的屏幕截图。

以下是我使用的设置:


baseAddr = GSPI_base、
.intNum = INT_GSPI、
.intPriority =(~0)、
spiPRCM = PRCM_GSPI、
.csControl = SPI_SW_CTRL_CS、
csPolarity = SPI_CS_ACTIVELOW、
.pinMode = SPI_3PIN_MODE、
.TurboMode = SPI_Turbo_OFF、
scratchBufPtr =&spiCC3235SDMAscratchBuf[CC3235SF_LAUNCHXL_SPI1]、
defaultTxBufValue = 0、
.rxChannelIndex = UDMA_CH6_GSPI_RX、
txChannelIndex = UDMA_CH7_GSPI_TX、
.minDmaTransferSize = 100、
.mosipin = SPICC32XXDMA_PIN_07_MOSI、
MISO 引脚= SPICC32XXDMA_PIN_06_MISO、
clkPin = SPICC32XXDMA_PIN_05_CLK、
csPin = SPICC32XXDMA_PIN_NO_CONFIG

SPI_Params_init (&spiParams);
// spiParams.frameFormat = SPI_POL0_PHA0;
spiParams.mode = SPI_MASTER;
spiParams.bitrate = 2000000;
spiParams.dataSize = 8;

masterSpi = SPI_open (Board_SPI0、&spiParams);
if (masterSpi == NULL){
UART_PRINT ("初始化主器件 SPI\n"时出错);
while (1);

否则{
UART_PRINT ("已初始化主 SPI \n");

int32_t cc_spi_read (uint8_t *缓冲区、uint32_t len)

/*断言 CS */
GPIO_WRITE (CC3235SF_GPIO_OV_SPI_CS、0);

transaction.count = len;
transaction.txBuf =空;
transaction.rxBuf =(void *) buff;
SPI_TRANSFCTION (masterSpi、事务);

/*断言 CS */
GPIO_WRITE (CC3235SF_GPIO_OV_SPI_CS、1);

返回 len;

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

    您好!

    未连接预期的 SPI 读取缓冲器和实际读取 SPI 缓冲器

    实际 SPI 读取缓冲器(不正确):

    0x30 0x03 0x33 0xC0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    0x00 0x00 0x00 0x000x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    预期的 SPI 读取缓冲器(Coorect 和在线可见):

    0x44 0x41 0x45 0x48 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    0x00 0x00 0x00 0x000x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

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

    我还有一个错误读取的样本。 是否有帮助。 它是否与极性或相位有关?

    实际 SPI 读取缓冲器(不正确):

    0x03 0xFF 0xFF 0xFF 0x0C 0x3F 0x00 0x00 0x00 0x00 0x00 0xC3 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xF3 0x00 0x00
    0x00 0x03 0x00 0x00 0x00 0x0F 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    预期的 SPI 读取缓冲器(Coorect 和在线可见):

    0x01 0xFF 0xFF 0xFF 0x02 0x17 0x00 0xA0 0x00 0x40 0x39 0x00 0x00 0x10 0x00 0x1D 0x00 0x00

    0x00 0x01 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00  

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

    Jitendra、

    您连接的是什么器件?

    您如何查看此垃圾数据? 例如、您是否通过串行方式输出它?

    BR、

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

    您好!

    器件是一款视频编码器从设备、与视频参考设计类似。

    数据从调试器的存储器视图中复制。

    令人惊讶的是、有时数据被完美捕获、除非我复位 MCU、否则数据将继续工作。

    逻辑分析仪屏幕截图是在 LaunchPad 引脚上捕获的。

    您能建议我何时能得到及时响应吗? 以便我可以立即执行任何测试?

    此致

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

    您好!

    当您说数据在特定测试运行期间完全捕获时、这种情况是不确定的、还是在同一运行期间最终停止工作?

    此外、您是在自己的定制板上运行、还是在 LaunchPad 上运行?

    您是否尝试以低于20MHz 的 SPI 时钟速率运行、并查看它是否会降低此问题的发生率?

    如何对电路板执行复位? 这是通过切换 nRESET 行实现的、还是在测试运行之间使用其他一些复位方法?

    此致、

    Michael

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

    当您说数据在特定测试运行期间完全捕获时、这种情况是不确定的、还是在同一运行期间最终停止工作?

    如果它工作正常、它将继续完美工作。

    此外、您是在自己的定制板上运行、还是在 LaunchPad 上运行?

    LaunchPad 通过跳线与定制板连接。 如果您想了解更多详细信息、我可以通过电子邮件进行分享。

    您是否尝试以低于20MHz 的 SPI 时钟速率运行、并查看它是否会降低此问题的发生率?

    我尝试了时钟低至2MHz 的确切 Sam 行为。

    如何对电路板执行复位? 这是通过切换 nRESET 行实现的、还是在测试运行之间使用其他一些复位方法?

    我已尝试 nRESET 并对两者进行下电上电。

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

    您好!

    为了澄清这一点、您是否有一个用作 SPI 主器件的 CC3235 LaunchPad、该 LaunchPad 将数据提供给用作 SPI 从器件的定制板上的非 CC32XX 器件?

    使用 CC3235和您的另一个器件之间的跳线、您是否已确保将跳线长度保持在最小值? 可能 SPI 时钟信号受到跳线的影响、从而导致读取错误的数据。 您是否具有 SPI 时钟信号的示波器捕获并已检查该信号以确保时钟符合数据表中提到的 CC3235 SPI 外设的时序参数?

    在测试期间、您是否重复打开和关闭 CC3235的 SPI 接口? 也许您可以尝试 在 SPICC32XXDMA.c 的 SPICC32XXDMA_open ()中添加 MAP_PRCMPeripheralReset (PRCM_GSPI)调用 我会将其放在该函数的 initHw()调用之前。 该函数将确保 CC3235的 SPI 外设复位为已知良好的状态。

    此致、

    Michael

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

    您好!

    我假设您已经解决了您的问题、因为我没有听到您的反馈。 如果没有、请随时发布对此主题的响应、或打开有关此问题的新主题。

    此致、
    Michael

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

    您好、Michael、

    请关闭 TT。

    问题是由 SPI 总线上的另一个从器件引起的。