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.

[参考译文] CC3120MOD:能否在回调模式下实现 SPI_Write (FD_t FD、unsigned char * pBuff、int len)函数?

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/743399/cc3120mod-could-it-possible-to-implement-spi_write-fd_t-fd-unsigned-char-pbuff-int-len-function-in-callback-mode

器件型号:CC3120MOD
主题中讨论的其他器件:CC3120

您好!

我将 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); 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shubham、

    是的、可以在非阻塞模式下实现此功能、但在实现过程中需要小心谨慎。 阻止这些调用的目的是确保 SPI 传输不会出现故障、或在原始写调用返回之前调用另一个写操作。

    由于您正在进行 STM32端口连接、因此您必须了解如何按照所需的方式正确设置 SPI。 我们没有任何有关如何执行此操作的示例。

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

    您能不能建议一些我会找到的有关此类实施的文档、因为我没有找到任何解释这些实施的非阻塞实施方法的文档。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shubham、

    我认为我们没有任何有关如何执行此操作的文档、因此在您的结尾处弄清这一点将是一项开发工作

    我建议不要采用非阻塞模式。

    此致、
    VR