找回密码
 立即注册
查看: 943|回复: 7

SPI 中断读多字节问题

[复制链接]

4

主题

8

回帖

51

积分

注册会员

积分
51
发表于 2023-3-14 17:22:44 | 显示全部楼层 |阅读模式
目前是想透过 STC15F2K60S2 透过 SPI 读取 MAX6675 的实时温度


首先尝试了在 Timer0 中断中透过询问的方式读取 SPI ,似乎是 Timer0 的优先权导致无法触发 SPI 动作

后来尝试了在 Timer0 中断中写入 SPDAT 触发 SPI 中断,虽然能够顺利触发 SPI 中断,然而仅能读取一个 Byte

由于 MAX6675 的温度数据是两个字节,想请问有什么办法能让 SPI 中断读取两个字节呢?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-3-14 21:06:23 | 显示全部楼层
触发SPI没有优先权的问题,SPI工作于主机模式,任何时候往SPDAT里送入一个字节,均能启动SPI发送,发送完成标志置1,停止发送,等待下一次发送。
你要读2个字节,就要发送2次,才能读到2个字节。要读N个字节,就要发送N次,比如读取SD卡的一个扇区512字节,就要发送512次。
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-08-27 15:25:33

1

主题

17

回帖

105

积分

注册会员

积分
105
发表于 2024-7-27 09:27:01 | 显示全部楼层
stg32在中断函数貌似里不能放带有中断的函数,比如time中断函数里不能用uart中断方式发送数据,但用查询模式可以发送。以前用stc89c52就可以在time中断函数里放什么都行。这造成什么都要搞个标志,然后在主函数里排队,实时性大大折扣!你可以把spi中断禁用,用查询方式收发就可以放在time中断里。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-7-27 10:56:12 | 显示全部楼层
BFMIP*** 发表于 2024-7-27 09:27
stg32在中断函数貌似里不能放带有中断的函数,比如time中断函数里不能用uart中断方式发送数据,但用查询模 ...

你这说的不考虑一下中断优先级问题?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-08-27 15:25:33

1

主题

17

回帖

105

积分

注册会员

积分
105
发表于 2024-7-29 08:13:43 | 显示全部楼层
_奶*** 发表于 2024-7-27 10:56
你这说的不考虑一下中断优先级问题?

time0的时进入中断后让时钟停止,中断禁止,一样不能在中断函数里用串口发送!那又是为何?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-7-29 08:42:25 | 显示全部楼层
BFMIP*** 发表于 2024-7-29 08:13
time0的时进入中断后让时钟停止,中断禁止,一样不能在中断函数里用串口发送!那又是为何? ...

这个和中断禁止不禁止没关系把,,和中断嵌套抢占有关
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-08-27 15:25:33

1

主题

17

回帖

105

积分

注册会员

积分
105
发表于 2024-7-29 09:27:02 | 显示全部楼层
_奶*** 发表于 2024-7-29 08:42
这个和中断禁止不禁止没关系把,,和中断嵌套抢占有关

那有什么办法可以实现这种一个中断直接触发另带中断函数?最常见就是触发这种发送数据的函数。还有官方的例子也是什么都加个另外的标志来查询中断,为什么不直接查中断标志位!虽然新的mcu主频上去了,功能也多,但感觉实时性还真不如以前功能少得可怜的89c。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-7-29 13:05:30 | 显示全部楼层
本帖最后由 _奶咖君_ 于 2024-7-29 13:06 编辑
BFMIP*** 发表于 2024-7-29 09:27
那有什么办法可以实现这种一个中断直接触发另带中断函数?最常见就是触发这种发送数据的函数。还有官方的 ...

你把串口中断优先级调高了,不就可以了  当然还要注意函数重入问题
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 04:15 , Processed in 0.134514 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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