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.

[参考译文] CC2340R5-Q1:关于 GPIO 模拟 SPI

Guru**** 2589245 points
Other Parts Discussed in Thread: CC2340R5-Q1

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1397990/cc2340r5-q1-about-gpio-simulate-spi

器件型号:CC2340R5-Q1

工具与软件:

大家好、团队成员:  

我的客户使用 GPIO 来模拟 SPI 功能。

CC2340R5-Q1充当 SPI 从器件、SPI 主器件是传感器 IC。

来自 传感器 IC 的 SPI 时钟  大约为10kHz。(脉冲宽度约为37us)。

使用了两个 GPIO 引脚。 一个 GPIO 设置为输入引脚(引脚名称:SPI-Clock)、另一个 GPIO 设置为输出引脚(引脚名称: SPI-MISO)。

SPI-Clock 设置为边沿触发器(上升沿和下降沿)。

他们编写一个示例程序来检测  SPI 时钟的边沿。

当它检测到上升沿时、 SPI-MISO 设置为高电平、当它检测到 下降 沿时、 SPI-MISO 设置为低电平。

它应如下所示:

但当我们运行更长的时间时、这似乎并不准确。

请帮助提供注释、以便微调计时。 谢谢。

您可以在以下屏幕截图中看到更多信息:  

下面是示例代码:

static uint8_t m_aa = 1;
void gpio_spi_data_transfer(void)
{
    GPIO_setConfig(SG_HW_SPI_MISO, GPIO_CFG_OUTPUT );
    GPIO_write(SG_HW_SPI_MISO, (m_aa%2) );
    m_aa++;
}

static void SPI_SCLK_IRQHandler(uint_least8_t index)
{
        gpio_spi_data_transfer();
}

init()
{
GPIO_PinConfig m_cfg;

m_cfg = GPIO_CFG_INPUT | GPIO_CFG_IN_INT_BOTH_EDGES;
GPIO_setConfig(SG_HW_SPI_CLK, m_cfg);
GPIO_setCallback(SG_HW_SPI_CLK, SPI_MISO_IRQHandler);
GPIO_enableInt(SG_HW_SPI_CLK);
}

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

    大家好、团队成员:  

    请帮助提供评论。

    谢谢。

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

    您好!

    我目前正在研究这个问题、因为我正在尝试重现该问题。 我会尽快回复您。 我可以确认这是针对 TI Launchpad 还是定制电路板?

    此致、

    羊绒

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

    尊敬的 Cashmere:  

    我的客户正使用他们的定制电路板来解决此问题。

    谢谢。

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

    您好!

    请确认现在正在使用哪个 SDK? 还请告知我您的逻辑分析仪的采样率是多少?

    此致、

    羊绒

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

    尊敬的  Cashmere:  

    SDK 版本  8.10.0.55.  

    LA 采样速率设置为25MHz。

    此外、我们发现 SPI-MISO 有时无法及时输出。  
    请检查以下红色矩形、您可以看到 SPI-Clock 正在上升、但 SPI-MISO 无法立即设置为高电平。

    这是紧急情况,请帮助提供微调的意见。

    谢谢。

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

    尊敬的  Cashmere:  

    为了验证这个问题、我的客户 使用 SDK 中的以下两个示例项目 、并实现示例代码 以检测 由 信号 发生器生成的20Hz 时钟的边沿。  

    当其检测到上升沿时、数据引脚设置为高电平;当其检测到 下降 沿时、数据引脚设置为低电平:  

    1. gpiointerrupt (无 RTOS 版本)  

    2. basic_ble  (RTOS 版本)  

    在 Project :gpiointerrupt (没有 RTOS 版本)中,您可以看到它运行良好。

    (通道0:GPIO 输出、通道1:来自信号发生器的时钟。)

    在 Project : basic_ble(RTOS+BLE Stack)中,您可以看到它一直不能正常工作。

    您可以在第2个/第3个/第4个红矩形窗口中看到异常 GPIO 输出。

     

    请帮助我们提供有关如何在 basic_ble (RTOS +BLE Stack)中实现完美 GPIO 计时 的意见。

    谢谢!

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

    抱歉、 此处缺少 basic_ble (RTOS +BLE Stack)的图片:

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

    您好!  

    我向您发送了一个有关使用具有三个物理引脚的 SPI 的示例代码。 您可以对此进行调整、以便更好地适应您的用例/场景。 BLE 会在每次传感器产生中断时进行广播。 器件在完成10个广播事件后进入关断状态。 您可以将其更改为任何数量的事件或任何广告持续时间。 如果您有任何问题、敬请告知。 否则、我将关闭该主题。 谢谢!