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.

[参考译文] RTOS/TM4C129ENCPDT:CC3100模块通信的 SPI 端口更改不起作用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/611813/rtos-tm4c129encpdt-spi-port-changes-for-cc3100-module-communication-not-functional

器件型号:TM4C129ENCPDT
主题中讨论的其他器件:CC3100

工具/软件:TI-RTOS

大家好、

提供有关我尝试实现的目标的简要信息  

我有 TM4C129X 开发板、并尝试将 cc3100 wifi 模块与其集成。 IM 使用 simplelink 库并成功与示例 wifi 示例进行通信  

现在、当按照我的原型板修改 SPI 引脚时、我遇到了成功完成"WiFi_open (Board_wifi、Board_WiFi_SPI、NULL、&wifParams)"函数调用后出现的问题、接下来、当它调用"sl_Start"时、系统挂起、并且由于"sl_Start"是库、我无法进一步调试、 我假设"sl_Start"内有一些例程、它正在等待来自 Wifi 芯片的一些 ACK。

我还观察到、如果我将 IRQ 引脚从端口 M.3更改为其他引脚、例如端口 P.0 (其他引脚保持不变)、固件会再次无限循环等待

下面是我的初始化代码

WiFiCC3100_Object wiCC3100Objects[EK_TM4C129EXL_WIFICOUNT];

const WiFiCC3100_HWAttrs wFiCC3100HWAttrs[EK_TM4C129EXL_WIFICOUNT]={

.irqPort = GPIO_PORTM_BASE、
.irqPin = GPIO_PIN_3、
.irqIntNum = INT_GPIOM、

csPort = GPIO_PORTB_BASE、
csPin = GPIO_PIN_4、

.enPort = GPIO_PORTP_BASE、
.ENPin = GPIO_PIN_1

};

const WiFi_Config WiFi_config[]={

.fxnTablePtr =&WiFiCC3100_fxnTable、
.object = wiCC3100Objects[0]、
hwAttrs =&wFiCC3100HWAttrs[0]
}、
{NULL、NULL、NULL}、
};

/*
*==== EK_TM4C129EXL_initWiFi ===
*
void EK_TM4C129EXL_initWiFi (void)

/*配置 EN 和 CS 引脚以禁用 CC3100 */
GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_4);
GPIOPinTypeGPIOOutput (GPIO_PORTP_BASE、GPIO_PIN_1);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_4、GPIO_PIN_4);
GPIOPinWrite (GPIO_PORTP_BASE、GPIO_PIN_1、0);

/*为 CC3100配置 SSI2 */
SysCtlPeripheralEnable (SYSCTL_Periph_SSI1);
GPIOPinConfigure (GPIO_PB5_SSI1CLK);
GPIOPinConfigure (GPIO_PE4_SSI1XDAT0);
GPIOPinConfigure (GPIO_PE5_SSI1XDAT1);
GPIOPinTypeSSI (GPIO_Porte _BASE、GPIO_PIN_4 | GPIO_PIN_5);
GPIOPinTypeSSI (GPIO_PORTB_BASE、GPIO_PIN_5);

/*配置 IRQ 引脚*/
GPIOPinTypeGPIOInput (GPIO_PORTM_BASE、GPIO_PIN_3);
GPIOPadConfigSet (GPIO_PORTM_BASE、GPIO_PIN_3、GPIO_Strength _2mA、
GPIO_PIN_TYPE_STD_WPD);
GPIOIntTypeSet (GPIO_PORTM_BASE、GPIO_PIN_3、GPIO_RISE_EDGE);

spi_init();
EK_TM4C129EXL_initDMA ();

WIFI_INIT();

提前感谢

-Prajnith

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Prajnith、
    您是否有机会参考使用 TM4C129和 CC3100的 TI 参考设计? 在用户指南的第3节中、两个处理器之间通过 SPI 通信进行信号映射。

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

    您好、Charles、

    感谢您的快速回复、为了澄清我能够使用示例连接到 cc3100、但当我将默认端口/引脚更改为符合我要求的特定引脚时、尤其是 SPI 和 IRQ 引脚、我面临着问题。 如果我之前粘贴的代码有效与否、我需要一些帮助。 我看到我们正在为 IRQ 引脚启用中断、那么我们需要显式指定中断处理程序、还是简单链接库会处理中断? 与此类似、使用除示例中提到的默认 SPI 端口之外的 SPI 端口是否存在任何限制?

    谢谢、

    -Prajnith

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只需添加上述注释,如果我将 IRQ 端口 M 引脚(例如从 M.3更改为 M.6),它仍然有效,但当我更改端口本身时,IRQ 停止工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Prajnith、

     我不会看到您在独立上下文中粘贴的代码有问题。 要问的问题是、您是否正在使用 launchpad 上的 Booster Pack? 当您将 MCU 侧的 SPI 引脚从 SSI2 (如示例所示)更改为 SSI1时、SPI 接口不再通过引导器连接器与 CC3100连接。  

     就 IRQ 而言、您从 PM3更改为另一个端口、即 Porta、然后您还需要更新中断处理程序。 PORTM 被映射到 NVIC 中的矢量88。 假设您要将 IRQ 映射到 Porta、则需要添加映射到矢量16的 Porta 处理程序。  

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

    您好、Charles、

    感谢您的讲解。

    实际上、我能够修复 IRQ 问题、但不确定 它到底是如何得到解决的。 我所做的是、我将 从 TI Tiva 文件夹引用 的所有 WiFi 和 simplelink 代码复制到我的主项目、以便我可以调试 WiFi API、但通过将 WiFi 库文件复制到我的主项目、就像解决问题的方式一样。 我不确定之前在从 TI 安装文件夹中重新输入 WiFi 库时发生了什么错误。

    转到 SPI、是的、我正在使用 WiFi Booster Pack、但我没有将其安装在 Tiva 板上、而是通过分线连接它。 以便我可以连接到相应的端口。

    由于我无法使 CC3100与 SPI 1端口一起工作、因此我尝试了 SPI 3端口、它工作正常。

    SPI1端口和 SPI2 3端口之间唯一的主要区别是、在 SPI1中、MISO 和 MOSI 位于端口 E 上、CLK 位于 PORTB 上、但在 SPI2中、3 MISO、MOSI 和 CLK 位于同一端口上。 我知道这不应该是任何问题、因为它在内部复用到 SPI 密钥、而只是一个观察结果。

    此外、我之前忘记提到过、在 CC3100示例中、SPI 端口映射了 DMA。

    如果您可以确认在使用 SPI 1端口和 DMA 时是否存在任何限制、这将非常有用

    谢谢

    -Prajnith

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Prajnith、
    我假设您正在讨论 UDMA、对吧? 由于您询问了 SPI 1端口以及 DMA、这就提出了一个很好的检查点。 如果在 SSI1的示例中使用了 uDMA、那么如果要使用不同的 SSI、则需要修改 uDMA 控制结构。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我为 SPI 3修改了相应的 DMA 通道选择、但当我为 SPI 1修改时、它不起作用。 返回 PC 后、我将共享其余代码。

    谢谢
    -Prajnith
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Prajnith、
    另请使用示波器观察 SPI1。 MCU 应该是主器件、所以它应该生成 SPICLK。 您是否看到 SPICLK 和 SIMO 活动?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    在完成参考手册之后、我将 UDMA 从次要更改为主、并将通道从10、11更改为24、25、然后它正常工作。

    -Prajnith
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴您的问题得到解决。