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.

[参考译文] CC1312R:UART 示例

Guru**** 2595770 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1058495/cc1312r-uart-example

器件型号:CC1312R

你(们)好

我使用 IAR/STCubeIDE 开发了 Atmel、ST 和 NXP 的 ARM C 软件。

我现在使用 Code Composer Studio 为 CC1312 MCU 创建引导加载程序、使用调制解调器下载应用程序映像。 调制解调器通过 UART 连接。

我尝试以 uartecho_CC1312R1 nortos 为例、但 调试器卡在 GPIO_init()中。 我的 IOS 初始化可能错误! 我已将原始.syscfg 更改为使用 UART0 RxD 和 TxD。

当我尝试调试 GPIO_init()时,调试器不会进入内部。  Power_init 和 UART_init 也会发生同样的情况。

有什么想法可以帮助您?

谢谢

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

    我能够调试对 GPIO_init 的调用、它似乎在  GPIOCC26XX.c 第398行中崩溃。

    此行包含:

    /*
    *配置引脚并根据静态阵列内容创建 Hwi
    *
    对于(I = 0;I < GPIOCC26XX_config.numberOfPinConfigs;I++){
    如果(!(GPIOCC26XX_CONFIG.pinConfigs[i]& GPIO_DO 不_CONFIG){  <-第398行
    GPIO_setConfig (I、GPIOCC26XX_config.pinConfigs[i]);

    if (i < GPIOCC26XX_config.numberOfCallback){
    if (GPIOCC26XX_config.callbacks[i]!= NULL){
    /*根据需要创建 Hwi */
    GPIO_setCallback (I、GPIOCC26XX_config.callbacks[i]);


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

    它似乎在 LDR 故障上崩溃

    LDR R1、[r0、R5]

    R1为0x200023C0

    R0为0x20014000

    R5为0x00000000

    所以

    r1 =内存[ r0 + r5 ]

    R1 =内存[0x20014000 + 0]

    根据映射文件20014000为__STACK_END!!!  

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

    我复制了 C:\ti\simplelink_cc13x2_26x2_sdk_3_30_00_03\examples\nortos\CC1312R1_LAUNCHXL_drivers\uartecho 中的示例代码形式 uartecho

    有一个文件 CC1312R1_LAUNCHXL_Fxns.c 可执行一些电路板初始化... 在 Board_initHook()中,它似乎初始化外部闪存的 SPI 接口...

    PIN_Config extFlashPinTable[]={
    /* SPI 闪存 CS*/
    ioID_20 | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull |
    PIN_INPUT_DIS | PIN_DRVSTR_MED、
    /* SPI 闪存 CLK */
    ioID_10 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull |
    PIN_INPUT_DIS | PIN_DRVSTR_MED、
    /* SPI 闪存 MOSI */
    ioID_9 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull |
    PIN_INPUT_DIS | PIN_DRVSTR_MED、
    /* SPI 闪存 MISO */
    ioID_8 | PIN_INPUT_EN | PIN_PUL拉、
    PIN_TERMINATE
    };

    我们的板没有这样的板。 因此、为了使示例适合我们的电路板、需要进行一些定制。 我在 syscfg 中找不到任何位置来自定义它。

    这应该在哪里进行?

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

    您好、Eduardo、

    首先、我们在器件 ROM 中对引导加载程序进行了编程。 你看了吗? 这可以为您节省一些实施自己的工作。

    请参阅《技术参考手册》第10章。

    https://www.ti.com/lit/swcu185

    谢谢、

    玛丽·H.

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

    我们需要开发的引导加载程序是与 SIM7600 4G 调制解调器进行交互的非常具体的。

    我们无法使用内置的引导加载程序。

    对于我上面报告的问题、是否有任何解决方案?

    谢谢

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

    您好、Eduardo、

    我明白了。

    我们还有一个示例、可供您参考:

    https://dev.ti.com/tirex/explore/node?node=AC6C-TbavbNacjvSzr3iRA__BSEc4rl__LATEST

    这是引导映像管理器(BIM)、这是我们为无线固件下载解决方案开发的引导加载程序。  

    我还想链接本指南、其中说明了如何将您的软件调整为定制板:

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_5_30_01_01/docs/proprietary-rf/proprietary-rf-users-guide/proprietary-rf-guide/custom-hardware.html

    谢谢、

    玛丽·H

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

    您似乎不需要  CC1312R1_LAUNCHXL_Fxns.c 文件、因为您在定制板上运行、是否尝试从构建中排除此文件? 它仅用于将 Launchpad 上使用的闪存设置为待机状态。  

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

    谢谢。 我怀疑 不应使用 CC1312R1_LAUNCHXL_Fxns.c 文件、因为它正在初始化 SPI 接口。 我从编译中排除了该函数、但程序仍会在 GPIO_init()中崩溃。

    我想、我必须有一个错误的配置。 但我只有非常基本的。 UART RX 和 TX 以及用于 Buzzer 的输出。

    有什么模式想法吗? 谢谢

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

    您是否能够准确地看到 GPIO_init 失败的地方?

    您能否在原始示例中准确地发布您更改了哪些内容?

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

    是的、它在 LDR 中断的 GPIO_init 中失败

    这一个:

    LDR R1、[r0、R5]

    R1为0x200023C0

    R0为0x20014000

    R5为0x00000000

    所以

    r1 =内存[ r0 + r5 ]

    R1 =内存[0x20014000 + 0]

    根据映射文件20014000为__STACK_END!!!  

    如何在论坛上放置图片?

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

    我更想说的是、当这种情况发生时、我的柜台是什么? 寄存器值有点难映射到确切的原因。  

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

    是的、我知道。 问题似乎是我无法调试 C 文件、不知怎么说 GPIO_init 必须在某个库中、我无法单步执行它...

    是否有一种 方法可以使用 C 文件本身?

    但是、调试器指示它在文件:行 GPIOCC26XX.c:398处停止、我可以在安装时的文件中找到该文件、该文件位于 for 循环中:

    /*
    *配置引脚并根据静态阵列内容创建 Hwi
    *
    对于(I = 0;I < GPIOCC26XX_config.numberOfPinConfigs;I++){
    如果(!(GPIOCC26XX_CONFIG.pinConfigs[i]& GPIO_DO 不_CONFIG){  <-第398行
    GPIO_setConfig (I、GPIOCC26XX_config.pinConfigs[i]);

    if (i < GPIOCC26XX_config.numberOfCallback){
    if (GPIOCC26XX_config.callbacks[i]!= NULL){
    /*根据需要创建 Hwi */
    GPIO_setCallback (I、GPIOCC26XX_config.callbacks[i]);


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

    对于驱动程序、默认为预编译库。 但是、如果您要单步执行驱动程序中定义的函数、则可以将此驱动程序的.c 文件直接包含到项目中(如果您要对驱动程序进行自己的修改、也很实用。 然后、此代码将运行(而不是预编译库)、您将能够单步执行代码。  

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

    我很困惑 :):)

    我已经在  项目中添加了 GPIOCC26XX.c、它 不再崩溃!!!

    当然、我没有抱怨... 是否有任何关于 可能发生的情况的解释?

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

    我还尝试将 UART.c 和 uart.h 包含在我的项目中、来自:

    C:\ti\simplelink_cc13x2_26x2_sdk_3_30_00_03\source\ti\devices\cc13x2_cc26x2\driverlib

    但我在 uart.h 所包含的文件中遇到错误

    #include "../inc/hw_types。h"
    #include "../inc/hw_uart。h"
    #include "../inc/hw_memmap。h"
    #include "../inc/hw_ints。h"

    将驱动程序导入到项目中的正确方法是什么? 谢谢

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

    不是真的、因为预编译的.c 文件应该相等。 如果没有您的项目、您会有点难知道。  

    我认为可以通过更改为(一个示例)来修复 UART 文件中的内容:

    #include
    #include DeviceFamily_constructPath (inc/hw_Types.h)