STMCU小助手
发布时间:2023-2-17 14:35
|
1. 引言 众所周知,S2-LP 拥有两个数据 FIFO,一个用于数据传送,另外一个用于数据接收,它们各自的长度均为 128 字节。针对普通的小数据量而言,128 字节长度的 FIFO 基本上可以满足大部分应用。但是,随着应用越来越复杂以及对数据量的需求越来越大,128 字节就不够用了,此时就需要对 FIFO 进行管控,才能接收或者发送更多的数据。本文将详细介绍 S2-LP 针对大数量场景时的 FIFO 机制。 5 {' w. N8 o/ s: X2 G; V+ G1 Q 9 D( e' O1 m- z, \ ; A- ]2 q' Y& C 2. 应用场景 ! u7 [4 Q- G, j1 P! i. ^/ e* h 为了更好地阐述 S2-LP 针对大数据量传输时的 FIFO 机制,这里以发送/接收 500 字节的数据内容为例,讲解 S2-LP 如何管控 FIFO 来达到这个目的。对于 TX/RX FIFO 而言,它们均有两个可编程的阀值,S2-LP 就是基于这两个阀值来对 TX/RX 的 FIFO 进行管控,具体如下图 1 所示: 8 W; W% j7 v% i 7 N. m- |4 S0 e/ P. |- f
/ S5 B/ l: Y, x+ \* Z1 Q 2.1. TX FIFO 5 |, F- O5 N8 ]" C3 U* { 由上述的内容可知,当 TX FIFO 中的数据达到对应的阀值时,就会产生相应的中断,从而通知用户做出下一步的动作。对于可编程阀值而言,S2-LP 有专属的寄存器FIFO_CONFIG1、FIFO_CONFIG0 来配置这两个阀值,如下所示:& w: }3 D& [& T* T P! F( T 1. FIFO_CONFIG1[6:0]-->TX_AFTHR,用于设置 FIFO Almost Full 阀值 : C1 u/ l+ \; p/ Y | 2. FIFO_CONFIG0[6:0]-->TX_AETHR,用于设置 FIFO Almost Empty 阀值 # P7 |0 o4 m! j! u/ G" f * ^' N1 ?9 q( ^+ `7 h W4 C$ z8 J' U9 ~/ q7 { 由于 S2-LP FIFO 的特性,这两个阀值的配置是不一样的。例如,当用户希望 TX FIFO 达到 80 Bytes 时,产生 FIFO Almost Full 中断,那么 TX_AFTHR = 128 - (80-2);而当用户希望 TX FIFO 达到 20 Bytes 时,产生 FIFO Almost Empty 中断,那么TX_AETHR = 20。因此,如果 S2-LP 要发送 500 字节的数据,就需要利用这两个中断,即当 FIFO Almost Full 中断触发时,及时将数据传送出去,而当 FIFO Almost Empty 中断触发时,及时将剩余的数据填充至 TX FIFO。 2.2. RX FIFO 3 D; E+ ~! ?$ @2 a# G r9 L: y4 \ 同理,当 RX FIFO 中的数据达到对应的阀值时,也会产生相应的中断 ,从而用户可以根据中断做出下一步的动作;S2-LP 有专属的寄存器 FIFO_CONFIG3、FIFO_CONFIG2 来配置这两个阀值,如下所示: 1. FIFO_CONFIG3[6:0]-->RX_AFTHR,用于设置 FIFO Almost Full 阀值 + g: w `1 E. o% |: U 2. FIFO_CONFIG2[6:0]-->RX_AETHR,用于设置 FIFO Almost Empty 阀值 ) F6 u R3 z" v! U 但是,相较于 TX FIFO 的阀值设置,RX FIFO 有些许不同,即当用户希望 RX FIFO 达到80 Bytes 时,产生 FIFO Almost Full 中断,那么 RX_AF_THR = 128 - 80;而当用户希望 RX FIFO 达到 20 Bytes 时,产生 FIFO Almost Empty 中断,那么 RX_AE_THR = 20。因此,如果 S2-LP 要接收 500 字节的数据,就需要利用 FIFO Almost Full 中断,当其触发时,及时将数据从 RX FIFO 取走,从而陆陆续续地将这 500 字节的数据获取到。 3. 实验结果 基于上述的内容,利用 S2-LP FIFO Almost Full 和 FIFO Almost Empty 的机制就可以实现大数据传输的场景,测试结果如下图 2 所示,其中对应的源码文件见下述的附件: 7 ^2 }4 E9 G5 g; W
其中测试结果中的 DATA_CORRECT 意思是说,发送的数据与接收的数据是一致的。% f* I5 V2 e6 M% G6 n6 S 4. 小结 本篇章重点描述了 FIFO Almost Full 和 Almost Empty 工作原理及特性,并利用该特性实现了 500 字节的数据透传。同时也给需要使用数据量比较大的应用场景,提供一个很好的参考样例。 5 N- F4 ]1 z5 I0 x9 i+ H; V 完整版请查看:附件
S2-LP的FIFO机制.pdf
(269.21 KB, 下载次数: 2)
|
【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 功能的使用
微信公众号
手机版