|
本帖最后由 freeelectron 于 2018-8-22 17:26 编辑 背景:前一阵在支持客户的一个项目,据他们自己说是主要搞嵌入式linux的,现在需要用到LoRa,用stm32做了LoRa的板子,在官方的驱动的基础上,只改了GPIO,但是stm32与LoRa就是一直有问题,让他们用我们的试了试,是没问题的,之后看了他们的原理图,发现LoRa芯片的几个中断GPIO与stm32的连接上有问题。7 ^3 _/ {4 J" V' M& T" Z2 S LoRa除了需要SPi通讯外,还需要6个GPIO配置成外部中断,来产生接收中断,发送超时中断,发送完成中断,cad中断等等,这几个外部中断非常非常非常重要,如下图:
STM32的每一个GPIO都可以配置成外部中断,但是对于初次接触的人,或者说是硬件设计的人来说,这里就需要注意了:# B- @$ Z2 \9 q# L( A4 u+ F0 x ' c ~/ Q1 I9 `3 J) ]# | PA0~PG0 对应的是外部中断0 PA1~PG1 对应的是外部中断19 {* m% k& B# q& w F! o/ u PA2~PG2 对应的是外部中断2 PA3~PG3 对应的是外部中断3 PA4~PG4 对应的是外部中断4 ……! Y9 J* ^& c- U: I/ W3 m3 A. x0 V1 S PA15~PG15 对应的是外部中断15 ! I* M7 ~( ^ l" _" @) z/ } 以外部中断0为例来说:同一时刻PA0~PG0只能有一个配置为外部中断。换句话说,STM32只能同时支持16个外部中断。(题外话,LoRa需要六个外部中断是见过的比较多的了,应用需要的外部中断大于16个,可能就要另辟蹊径了)- x1 ?+ n) X3 U( F t. X( d7 D 9 F( b( @! x3 T* s 可以看到官方的设计,7 R5 r$ a. V [* O5 v7 a% n DIO5<->PA15/ e# X7 c# c) t4 a4 }" ~ DIO4<->PB3! t+ t$ ~! r/ x& `( z' L; ^ DIO3<->PB4 DIO2<->PB9& e4 w- i: m! S+ A H9 x/ w DIO1<->PC13: Z `6 t* l1 y. ^4 G0 E( e8 R9 d$ Q9 i DIO0<->PB11 如下图:- Q" t8 W6 s' K
5 ^0 E" m; U4 e9 B9 J. u+ D 附件,semtech官方的设计原理图:
SensorNode-schematic.pdf
(1.93 MB, 下载次数: 201)
|
微信公众号
手机版
5-9 共用一个中断函数 10-15也是共用一个中断函数
1,2,3,4可独立配置中断函数$ s9 e* S r5 M9 Z; a
5-9共用一个中断函数
10-15共用一个中断函数
用的1276不错;