Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
异步处理有什么好的处理方式可参考吗?
发布于 2021-11-08 15:29:38 浏览:774
订阅该版
遇到这么一种情况,对接一款芯片 SPI 通信,支持异步处理方式,就是芯片提供两个API接口,一个主机填充数据接口,一个主机获取验证结果的接口,针对异步处理, 有什么好的参考实现方式吗?
查看更多
2
个回答
默认排序
按发布时间排序
出出啊
2021-11-08
恃人不如自恃,人之为己者不如己之自为也
接口是异步的,你可以根据业务调整成同步的。 使用一个线程,用前一个填充数据后,换另一个接口的接收处理,处理完成才让走下一步发送。 这个过程即便不是一个线程,俩线程直接用**信号量**依次进行上面的操作,效果是一样。发送线程完成后释放信号量,获取验证结果的线程等待获取信号量,处理结束继续等待下次信号量。 完全的异步,这边只管发,不操心对方收没收到,不操心接收验证结果对不对。这种情况也就啥也不用考虑了。
李肯陪你玩赚嵌入式
认证专家
2021-11-08
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
从跟你描述的题干来看,这个SPI芯片的两个接口,应该都有一定的数据协议格式吧? 比如 `一个主机填充数据接口`: 它应该有要求你怎么填充数据才能获取正常的数据; `一个主机获取验证结果的接口`: 它应该会告诉它的数据是怎么返回的。 如果你想在上面的数据协议格式基础上,添加类似命令索引的标记,势必会改动它的格式,这应该它不支持吧。 对于这个芯片“支持异步处理”这一特点,我的理解是, 它可以在A时刻用第一个接口给他发一个指令,然后你可以去处理其他事情,随后在你空闲的B时候在用第二个接口读取处理的结果。 伪代码: ```c function() { //do something send_to_spi(); //do other things recv_from_spi(); //do other things } ``` 它这个`支持异步处理`是相对于`同步`而已的,因为SPI协议本身是一个同步协议。 如果它不支持异步处理,那么它开发的接口就只有一个, 伪代码: ```c function() { // do something send_recv_spi(); //do other things } ``` 两者最大的区别就是,在SPI芯片侧处理数据并返回之前,主芯片这边能不能够做其他事情。 还有一点,如果你想做到一个劲地拼命往SPI侧发而不管它返回不返回,还得看下SPI芯片是否支持这种模式; 如果它只能支持一请求一响应模式呢?当第二发送指令发过去了,如果第一条指令还没被读取,此时如果SPI芯片有状态机维持的话,可能就不会处理你的第二条指令了。 所以SPI侧的支持情况,也需要了解清楚,最好看看它有没有提供相关的例程,从它的例程入手,可以省很多事。
撰写答案
登录
注册新账号
关注者
0
被浏览
774
关于作者
小住住
这家伙很懒,什么也没写!
提问
129
回答
126
被采纳
2
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
HC32F4A0 SD卡挂载及热插拔的实现
2
vscode插件 - RT-Thread Studio项目助手 | 跨平台开发
3
Console串口使用说明
4
WATCHDOG设备驱动开发
5
【NXP-MCXA153】eFlexPWM驱动移植
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部