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/LAUNCHXL-CC2650:尝试使用 CC2650 LAUNCHXL 配置 SPI

Guru**** 2546020 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/585359/rtos-launchxl-cc2650-trying-to-configure-spi-with-the-cc2650-launchxl

器件型号:LAUNCHXL-CC2650
Thread 中讨论的其他器件:CC2650

工具/软件:TI-RTOS

尊敬的 TI 专家:

我正在尝试使用 CC650 LAUNCHXL 建立与 MFRC522 RFID 读取器的 SPI 连接。 CC2650充当主设备、RFID 充当从设备。
我查看了 LCD 示例、但看起来我缺少了一些东西、因为我的程序卡在 Hwi.c 的函数中
更改了 CC2650_LAUNCHXL.c 中的说明
 BOARD_SPI0_CSn 从 PIN_DELOADD 更改为 IOID_11
我想使用引脚15作为复位引脚来复位 MFRC522、并按如下所示进行配置

我先打电话

PIN_init (BoardGpioInitTable);

我有以下定义

/*引脚驱动器手柄*/
静态 PIN_Handle pinHandle;

/* PIN_Config 表的全局存储器*/
静态 PIN_STATE 引脚状态;

PIN_Config pinTable[]={
      Board_SPI0_CSn | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull、
       Board_DIO15 | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull、
   PIN_TERMINATE
};
extern const SPI_Config SPI_config[];
SPI_Handle spiHandle;

然后、我通过执行以下操作来初始化 SPI

PIN_INIT (pinTable);-->以初始化我在 pinTable 中定义的引脚
      pinHandle = PIN_OPEN (&pinState、pinTable);
      if (!pinHandle){
          System_abort ("初始化电路板引脚时出错\n");
      }
//启动 SPI
      Board_initSPI();
      SPI_Params spiParams;
          SPI_Params_init (&spiParams);
          spiParams.bitrate = 1000000;
          spiParams.frameFormat = SPI_POL0_PHA0;
          spiHandle = SPI_open (Board_SPI0、&spiParams);

我进一步启动一个类似这样的 SPI 事务

PIN_setOutputValue (pinHandle、Board_SPI0_CSn、0);//选择 SPI 芯片 MFRC522 *
    无符号短整型 usLen=1;
    REG=REG& 0x7E;
   SPI_Transaction spiTransaction;
   spiTransaction.arg =空;
   spiTransaction.count = usLen;
   spiTransaction.txBuf =(ptr) reg;
   spiTransaction.rxBuf =空;

    bool ret = SPI_transfer (spiHandle、&spiTransaction);
    spiTransaction.arg =空;
       spiTransaction.count = usLen;
       spiTransaction.txBuf =(ptr)值;
       spiTransaction.rxBuf =空;
       RET = SPI_transfer (spiHandle、&spiTransaction);
 // MSB =0用于写入。 LSB 不在地址中使用。 数据表第8.1.2.3节。
 //(void) m_SPI.write (reg & 0x7E);
 //(void) m_SPI.write (value);
 
 PIN_setOutputValue (pinHandle、Board_SPI0_CSn、1);//发布 SPI 芯片 MFRC522 *

程序在 SPI 初始化期间或在初始化引脚时卡住... 当我暂停执行时、它会在 hwi.c 函数中向我显示一个 while 循环
/*如果没有插入异常处理程序,请在此处旋转*/
   while (Hwi_excHandlerFunc = NULL){
   ;
   }
我是否缺少初始化内容? 或者、我是否有 初始化 SPI 的过程错误? 或者是否错误地初始化引脚?

您能为我提供执行此操作的步骤吗?
我需要一个芯片选择引脚、可以在0和1之间切换
还有一个复位引脚(GPIO)
和标准 SPI。。 还是写入 SPI 不正确?
感谢你们的帮助!!!

谢谢!


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用的是哪个版本的 TI-RTOS? 您最近是否更改了版本?

    发生硬件异常。 如果你浏览 Hwi 模块的"异常"选项卡、你将看到解码的异常、发生异常时的寄存器上下文、以及导致异常的调用栈。 这可以帮助您调试问题。

    如果您单步执行您的程序、您能准确地确定问题发生的时间吗?
    Board_initSpi()是否返回?
    SPI_open()是否返回非空句柄?

    Alan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 TI RTOS 2_20_01_08! 不、我一直在使用与堆栈相同的东西。
    我尝试单步进入程序,但由于某种原因,它不允许我进入 BIOS_start()。。。 是否有任何其他方法可以确定 SPI 初始化问题? 我关注这个
    processors.wiki.ti.com/.../Cc2640_Adding_a_UART_or_SPI_driver_to_a_Sample_Project
    似乎也不起作用
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果你从汇编指令级单步执行、你应该能够单步进入 BIOS_start()代码。

    您是从 main()内还是在任务线程内调用 Board_initSPI()?

    您可以共享您的 CCS 项目吗? 我可以尝试在 CC2650 Launchpad 上运行它。