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.

[参考译文] CC2650:将SPI添加到cc26xx_web-demo示例时出现的问题

Guru**** 2547170 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/586717/cc2650-issues-adding-spi-to-cc26xx_web-demo-example

部件号:CC2650

我正在尝试将传感器添加到cc26xx_web-demo示例中。   我正在主模式下运行SPI。  传感器 在准备好接收SPI通信时激活"就绪"引脚。  此引脚每20毫秒激活一次。  我在这个pin上有一个外部中断,当中断被调用时,我发出一个process_poly()。

这是我的中断例程:

静态空隙
RDY_INTERRUCING_handler (uint8_t ioID)


    IF (is_SPI_READY == true)
   {
      is_sensor_ready = TRUE;
      PROCESS_poll (&MV_SENSOR_PROCESS);
         
   }

}

这很好,我的流程被称为。

  /*在此处定义特定于应用程序的事件。 */
 而(1){

#IF 0
   PROCESS_YIEW_DETENT (EV == PROCESS_EVENT_poll);
   printf ("轮询的传感器进程\n");
   //激活芯片选择
   TI_lib_gPIO_Clear_dio (Board_IOID_SENSOR_CS);

   //传输消息
   mv_spi_read_write( st_txMsg.au8_buf,st_rxMsg.au8_buf,MAX_SENSOR_Bytes );

   //停止芯片选择
   TI_lib_gPIO_SET_DIO(Board_IOID_SENSOR_CS);
#endif

   if( is_sensor_ready ){

      //激活芯片选择
      TI_lib_gPIO_Clear_dio (Board_IOID_SENSOR_CS);

      //传输消息
      mv_spi_read_write( st_txMsg.au8_buf,st_rxMsg.au8_buf,MAX_SENSOR_Bytes );

      //停止芯片选择
      TI_lib_gPIO_SET_DIO(Board_IOID_SENSOR_CS);
      is_sensor_ready =假;
   }

 }

该进程启动SPI通信。 但是,通信永远不会传输, 即使我仍然从传感器中获得了踢脚,也不会再次调用该过程。  6lbr进程也将停止。

下面是我用于传输的SPI代码:

布尔
mv_spI_READ_WRITE (const uint8_t *txbuf,uint8_t *rxbuf,size_t len)

   uINT8_t u8_loop = 0;

 而(len > 0){
   uINT32_t用户;
   ti_lib_ssi_data_put (SSI0_base,*txbuf);
   ti_lib_ssi_data_get (SSI0_base,&ul);
   rxbuf[u8_loop]= ul;
   len-;
   txbuf++;
   u8_loop++;
 }

 返回true;
}

为了确保我的SPI代码正常,我注释掉PROCESS_YPLOY_USE() ,并坐在Process循环中,直到我从中断获得一个标志, SPI通信工作正常。   

 /*在此处定义特定于应用程序的事件。 */
 而(1){

#IF 0
   PROCESS_YIEW_DETENT (EV == PROCESS_EVENT_poll);
   printf ("轮询的传感器进程\n");
   //激活芯片选择
   TI_lib_gPIO_Clear_dio (Board_IOID_SENSOR_CS);

   //传输消息
   mv_spi_read_write( st_txMsg.au8_buf,st_rxMsg.au8_buf,MAX_SENSOR_Bytes );

   //停止芯片选择
   TI_lib_gPIO_SET_DIO(Board_IOID_SENSOR_CS);
#endif

   if( is_sensor_ready ){

      //激活芯片选择
      TI_lib_gPIO_Clear_dio (Board_IOID_SENSOR_CS);

      //传输消息
      mv_spi_read_write( st_txMsg.au8_buf,st_rxMsg.au8_buf,MAX_SENSOR_Bytes );

      //停止芯片选择
      TI_lib_gPIO_SET_DIO(Board_IOID_SENSOR_CS);
      is_sensor_ready =假;
   }

 }

要使SPI传输从该过程正常工作,我缺少什么?