[STM32F1] SPI引脚能否间歇当作外部中断引脚?

[复制链接]
2123|13
 楼主| any012 发表于 2016-4-18 13:45 | 显示全部楼层 |阅读模式
请教个问题:stm32的spi和另一个元件通讯,stm32当主设备发送命令结束后,等从设备采样处理,处理结束后把MISO线拉低,通知stm32处理结束可以读取数据了。

原来是stm32发送完命令后就一直等着,等到MISO引脚被拉低后才发送读取数据命令。
现在觉得等待太浪费时间了,想在这段时间内做些其他数据处理。
那么,能把MISO引脚定义为外部中断吗?

 楼主| any012 发表于 2016-4-18 15:14 | 显示全部楼层
  1. void PB4_ExintEnable(u8 en)
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStructure;
  4.         EXTI_InitTypeDef EXTI_InitStructure;
  5.         if(en)
  6.         {
  7.                 GPIO_EXTLineConfig(GPIO PortSourceGPIOA, GPIO_PinSource0);
  8.                 EXTI_InitStructure.EXTI_Line = EXTI_Line;
  9.                 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  10.                 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;                //ϽµÑØÖжÏ
  11.                 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  12.         }
  13.         else
  14.         {
  15.                 EXTI_InitStructure.EXTI_LineCmd = DISABLE;
  16.         }
  17.         EXTI_Init(&EXTI_InitStructure);
  18. }


这样写,不知道行不行。
popeye021 发表于 2016-4-18 16:43 | 显示全部楼层
已经用了硬件spi的话,同时做外部中断输入可能不行,估计要来回切换。
可以在stm32发送完指令以后,定时扫描读取MISO的电平,读到低,再去读取spi的数据
ccw1986 发表于 2016-4-18 16:56 | 显示全部楼层
最好不要这样吧,用做miso的时候还得重新初始化,得浪费多少时间啊
zchong 发表于 2016-4-18 17:13 | 显示全部楼层
你这外设就没有独立的中断脚?
这样处理很麻烦,但是可行的,需要不断的对这个引脚进行重新配置
 楼主| any012 发表于 2016-4-18 17:15 | 显示全部楼层
popeye021 发表于 2016-4-18 16:43
已经用了硬件spi的话,同时做外部中断输入可能不行,估计要来回切换。
可以在stm32发送完指令以后,定时扫 ...

我现在用的软件SPI,感觉就挺浪费时间的...
popeye021 发表于 2016-4-18 17:51 | 显示全部楼层
any012 发表于 2016-4-18 17:15
我现在用的软件SPI,感觉就挺浪费时间的...

浪不浪费不重要,关键是能不能满足系统的需要。
大秦正声 发表于 2016-4-18 19:43 | 显示全部楼层
另外用一个i/o
Soraka 发表于 2016-4-18 22:16 | 显示全部楼层
已经用了硬件spi的话,同时做外部中断输入可能不行,估计要来回切换

同意楼上说法,来回切换会出问题的
Varus 发表于 2016-4-18 23:51 | 显示全部楼层
理论上可以,但是需要来回切换,怎么保证切换时不影响SPI通信呢,资源狗的话还是用另外的IO吧
 楼主| any012 发表于 2016-4-19 08:43 | 显示全部楼层
这个ADC特性决定的,数据采集时将MISO拉高,数据采集结束后将MISO拉低。通过MISO被拉低通知单片机可以读取数据。
没办法用另外的IO。
ngyg12 发表于 2016-4-19 09:39 | 显示全部楼层
MISO & 1 -> 另一个IO    SPI 发送/读取数据 禁止IO的中断   等待ADC 转换的时候 使能IO中断     & 为与门
 楼主| any012 发表于 2016-4-19 09:53 | 显示全部楼层
ngyg12 发表于 2016-4-19 09:39
MISO & 1 -> 另一个IO    SPI 发送/读取数据 禁止IO的中断   等待ADC 转换的时候 使能IO中断     & 为与门 ...

意思是将MISO也连到另一个IO上?
不明白MISO&1 -> 另一个IO,忘指教,谢谢。
ngyg12 发表于 2016-4-19 10:43 | 显示全部楼层
与门 一个输入 脚接MISO 另一个接高电平  输出接中断 IO
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

232

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部