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.
您好!
我将 CC3120主机驱动程序移植到 STM32微控制器。 我发现 SPI 接口有五个宏、我们必须根据主机架构实施和移植这些宏。
1. sl_IfOpen
2. sl_IfClose
3. sl_IfRead
4. sl_IfWrite
5 、SL_IfRegIntHdlr
但我必须确认一点、 我们是否可以 在回调模式(中断模式)下实现 sl_IfWrite/sl_IfRead? 我认为这些函数只能在阻塞模式下实现、正如我在 sl_IfWrite 的注释 中看到的那样(我在代码部分中提到了下面的注释、请阅读该注释)。 注释中提到这些函数 sl_IfWrite/sl_IfRead 将在 SPI 上完成数据传输后返回、并且还发现所有示例仅在阻塞模式下实现。 我还学习 了 CC3120的编程指南、在 阻止和回调模式中找不到任何与 SL_IfWrite/SL_IfRead 相关的内容。
因此、请告诉我 、在 CC3120 SPI 接口驱动程序中、有什么方法可以在回调模式下实现这些 sl_IfWrite/sl_IfRead 函数。 如果可能、如何实现?
或者、这些 sl_IfWrite/sl_IfRead 函数只能在阻塞模式(轮询模式)下实现、在 SPI 上的数据传输完成后返回?
////////////////////////////////////////////////////////////////////////////////////////////////////////// 请阅读此代码评论(取自 CC3120 SDK 的移植文件夹、文件 cc_PAL.h)///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*! \brief 尝试向 SPI 通道写入最多 len 个字节 \param fd -已打开 SPI 通道的文件描述符 \param pBuff -指向开始从 \param len 获取数据的第一个位置-要写入 SPI 通道 的字节数\return on successful (成功后返回) 完成后、该函数应返回0。 否则,应返回-1 \sa SPI_Open、SPI_Read 注意此函数可以实现为零复制、并且只有 在成功完成对整个缓冲区的写入后才返回、但如果内存分配不是太紧密、 则该函数可以将数据复制到内部缓冲区、 返回并 完成与其他活动并行的写入、前提是其他 SPI 活动将被阻止、直到 完成整个缓冲区写入 \warning */ extern int spi_Write (fd_t fd、 unsigned char * pBuff、 int len);