我正在尝试将传感器添加到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传输从该过程正常工作,我缺少什么?