查看: 4080|回复: 12

[MQX] 在mqx的中断中进行SPI的读写有问题(已解决)

[复制链接]

该用户从未签到

10

主题

40

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2016-2-17
发表于 2015-8-20 17:09:03 | 显示全部楼层 |阅读模式
本帖最后由 atomtom 于 2015-8-24 08:38 编辑

尝试在gpio的中断响应中进行spi的读写,  读写使用的是IO_IOCTL_SPI_READ_WRITE命令(不知道是我的配置问题,还是bsp没有改对的原因,我使用fflush()和IO_IOCTL_SPI_READ_WRITE命令都无法控制片选信号,  所以我把片选信号当做普通io来控制)在一般任务运行的时候,  spi读写没有任何问题.  但在中断中进行读写  ,如果添加fflush()这一句的话,读写返回IO_IOCTL_SPI_READ_WRITE ERROR,  并且没有clock输出;   如果不添加这一句,  有clock输出,   但是无法读到数据,  看波形并不是所有clock发完片选才拉高,  读出来的buffer里面都是0.
请问我需要如何进行修改可以在中断里面正常进行spi读写.



我知道答案 目前已有12人回答

评分

参与人数 1NXP金币 +3 收起 理由
小七 + 3

查看全部评分

回复

使用道具 举报

该用户从未签到

10

主题

40

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2016-2-17
 楼主| 发表于 2015-8-25 10:24:38 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-8-24 10:47
不客气,那你现在在中断中直接做SPI发送,已经成功了吗?

不行的。我是用的creat新的task来做spi的读写
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

10

主题

40

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2016-2-17
 楼主| 发表于 2015-8-21 11:18:11 | 显示全部楼层
暗搓搓地自己顶一下
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-8-21 13:05:12 | 显示全部楼层
atomtom 发表于 2015-8-21 11:18
暗搓搓地自己顶一下

楼主你好,你的问题我已经帮你转给我们的MQX工程师了,他有空会帮你解答,还请耐心等待下。
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

196

帖子

0

中级会员

Rank: 3Rank: 3

积分
380
最后登录
1970-1-1
发表于 2015-8-21 14:21:02 | 显示全部楼层
中断服务程序里一般不会执行写  这些执行时间长的语句
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

40

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2016-2-17
 楼主| 发表于 2015-8-21 14:51:19 | 显示全部楼层
FSL_TICS_DANIEL 发表于 2015-8-21 14:21
中断服务程序里一般不会执行写  这些执行时间长的语句

那有没有什么解决方案呢
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

40

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2016-2-17
 楼主| 发表于 2015-8-21 15:41:17 | 显示全部楼层
FSL_TICS_DANIEL 发表于 2015-8-21 14:21
中断服务程序里一般不会执行写  这些执行时间长的语句

我改成在中断里creat一个task来做这个读写,请问这样会不会有问题,比如说中断次数很多,任务执行完所占用的资源会被自动释放吗?
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-8-21 16:02:45 | 显示全部楼层
atomtom 发表于 2015-8-21 15:41
我改成在中断里creat一个task来做这个读写,请问这样会不会有问题,比如说中断次数很多,任务执行完所占用的 ...

中断服务函数中要尽量的短,你要在等到某个中断发生之后再去执行SPI通信,可以在中断中做个变量标志改变,然后在主程序中等变量改变之后再做SPI通信。
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

40

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2016-2-17
 楼主| 发表于 2015-8-24 08:37:54 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-8-21 16:02
中断服务函数中要尽量的短,你要在等到某个中断发生之后再去执行SPI通信,可以在中断中做个变量标志改变 ...

这样的话响应时间会慢不少,之前我试过这种方法,响应时间就是毫秒级的。现在我用的是楼上我提的方法,目前还没出现问题。谢谢版主和工程师的帮助。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-8-24 10:47:12 | 显示全部楼层
atomtom 发表于 2015-8-24 08:37
这样的话响应时间会慢不少,之前我试过这种方法,响应时间就是毫秒级的。现在我用的是楼上我提的方法,目 ...

不客气,那你现在在中断中直接做SPI发送,已经成功了吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-5-5 16:05 , Processed in 0.157402 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表