STMCU小助手
发布时间:2023-2-17 14:42
|
1. 引言 / L- A. }2 @) | H& f4 ~4 q 在使用 Spirit 系列的 Sub1G 产品时,有一些特殊的场景,其数据来源于 GPIO 口,然后再将获取到的 GPIO 数据发送出去。当前 ST Spirit 系列支持以下三种数据模式:6 o( n7 g" f, X9 z7 ~ 1. 正常模式 2. 直接 FIFO 模式# ^0 P' \" i# t1 [; Q9 A 3. 直接 GPIO 模式 其中,它们三者之间的区别如下: I. 正常模式 a) TX,有效的载荷包数据填充至 FIFO,当发送 TX 命令时,就会按照设置好的帧格式将数据发送出去/ Z$ i7 e: a* e0 e0 N; ?: W0 l b) RX,对接收到的数据进行识别,当且仅当同步字匹配时,才会将数据填充至FIFO 中5 }$ |" E/ s9 b0 X5 Q II. 直接 FIFO 模式/ b& A! M) M- {( d a) TX,用户需要自行拼装帧格式并填充至 FIFO,数据就会从 FIFO 中直接发送出去+ X/ z, c' ^" K+ ?2 J, P8 U8 y b) RX,对接收到的数据不进行任何处理,直接填充至 FIFO 中,用户自行在应用层中解析: ^0 v _$ F" ~+ t) a0 A' f2 C+ s III. 直接 GPIO 模式 1. TX,从 GPIO 口获取得到数据后不作任何处理,数据就直接被发送出去;同时伴随一个时钟用于传送数据(上升沿有效)5 U( v( b2 o) l8 o' n 2. RX,对接收到的数据不进行任何处理,直接通过 GPIO 输出;同时伴随一个时钟用于接收数据(下降沿有效)) C3 w) Z7 \2 h1 O& C5 s 本文以直接 GPIO 模式为例,讲解如何利用 S2-LP_DK GUI 配置直接 GPIO 模式并互相通信。 2. 应用场景9 c* A1 P# m8 \( ~: p. [ 为了更好地阐述如何利用 S2-LP_DK GUI 配置直接 GPIO 模式,我们假设这样一个场景: 设备 A 从信号发生器接收数据,然后通过 GPIO 口输出并作为设备 B 的数据源,而设备 B 通过 GPIO 接收这些数据,然后直接发送出去,最后设备 C 接收设备 B 的数据并输出Log 信息。这个场景的拓扑如下图 1 所示:4 F ~2 r2 `4 j7 K6 ? + f/ ~0 K* l" n8 g3 w; G: {0 X " q: k3 K! B2 i' R3 n
+ M5 R" N# ^3 o% X1 O 从上图可知,搭建这个场景需要如下设备: 1. 矢量信号发生器,R&S SMBV100A2. FKI868V 2 开发板 * 3 ) P) F3 y5 I& k; Y4 g* b# Z 2.1. 配置* c: c9 @3 O" `% b# H) f+ H, D 为了简化该场景的配置,这里采用默认的射频参数,即:* s0 D7 M0 r8 l4 Z; y 1. 中心频点:868Mhz or 840Mhz 2. 通讯速率:38.4Ksps 3. 频率偏差:20Khz 4. 接收带宽:100Khz# ^) F" h m: ~ 5. 调制方式:2GFSK-1& j% m' {( b" D8 c 以及帧格式如下图 2 所示: : }, U: e4 `* U - \" ~* n+ J3 l+ H9 h' f
* a$ Y5 K$ k$ M# u& e; j 具体配置分别如下:, h8 f0 ], |1 w5 ~4 | 8 k9 h- \5 ?+ b 2.1.1. 矢量信号发生器7 e! q! m" y0 e; R( O# k# Z 这里仅需要根据上述的配置中提及的参数设置即可,详情如下图 3 所示: 7 b+ ?5 j7 G- Z# G; g$ T5 Z; J8 |: K
$ A2 w3 _' X- y8 h$ S: \7 g 2.1.2. 设备 A; q3 o* @" x& V) N! C 同理,设备 A 想要从矢量信号发生器获取数据,对应的射频参数就要设置成一样,如下图 4 所示: ; n) D& |: U. C6 n1 @5 k6 d" i
# z# p& a H$ E# K+ K3 J 配置完上述的参数之后,在 Low Level Command 选项中点击 Data on GPIO no Packet,即可让设备 A 进入直接 GPIO 接收模式,如下图 5 所示:$ ?2 T2 N" g* f8 i8 C8 f8 N" f
, H, F) i* B& H5 Q & S/ z. A6 O d" S 然后,将 GPIO0 连接至设备 B 的 GPIO0 即可。- D. Z0 o- [$ F: @) ` # \& N- R+ d0 w7 a \5 x 1 `! N. A# [( Q+ ] 2.1.3. 设备 B$ \; Q; |! q5 I+ r! y 由于设备 A 与设备 B 之间的时钟是不同步的,所以为了获取设备 A 的数据,设备 B应该采用过采样的方式,即设备 B 的通讯速率应该至少等于设备 A 的 8 倍,也就是 38.4 * 8 = 307.2Ksps。但是,目前 GUI 最大只能设置 250Ksps 的速率,所以设备 B 想要配置通讯速率为 307.2Ksps,需要手动修改寄存器;具体如下图 6 所示: # B0 U6 Y: X9 l9 h+ k; G
4 c7 ?( h/ p0 M y' x. { ; M4 ~2 I0 z5 ~; H$ w 因为设备 B 此时是作为 TX 端,因此不需要配置接收带宽参数;同时为了避免引起歧义,将中心频点变更为 840Mhz。最后,在 Low Level Command 选项中点击 Send Data from GPIO,即可让设备 B 进入直接 GPIO 发射模式,如下图 7 所示:2 y( k3 ?( E$ W5 K* t 8 l0 T. L7 T9 R9 Z
完整版请查看:附件
如何配置S2-LP的直接GPIO模式.pdf
(590.98 KB, 下载次数: 0)
|
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版