你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

S2-LP的FIFO机制

[复制链接]
STMCU小助手 发布时间:2023-2-17 14:35
1. 引言 众所周知,S2-LP 拥有两个数据 FIFO,一个用于数据传送,另外一个用于数据接收,它们各自的长度均为 128 字节。针对普通的小数据量而言,128 字节长度的 FIFO 基本上可以满足大部分应用。但是,随着应用越来越复杂以及对数据量的需求越来越大,128 字节就不够用了,此时就需要对 FIFO 进行管控,才能接收或者发送更多的数据。本文将详细介绍 S2-LP 针对大数量场景时的 FIFO 机制。   C! f$ p+ x. G0 p
9 n/ |2 n. F& v, M+ ~
) n7 }! q9 V; h0 I
2. 应用场景 5 H' f. g4 m" _9 v# z. U7 K& q/ v
为了更好地阐述 S2-LP 针对大数据量传输时的 FIFO 机制,这里以发送/接收 500 字节的数据内容为例,讲解 S2-LP 如何管控 FIFO 来达到这个目的。对于 TX/RX FIFO 而言,它们均有两个可编程的阀值,S2-LP 就是基于这两个阀值来对 TX/RX 的 FIFO 进行管控,具体如下图 1 所示:
, ]: x; k: l. O! X3 n8 B5 S1 g( b! i- g0 T3 F
% x, e7 w/ I- a
MN(3QRBA%ZU$DZ[1P@69`XD.png
3 |8 O0 q' M( `& |' S8 G# B3 v
5 m  J$ Y  K  f( I8 Z6 C

& ~8 A4 Q3 g( R1 c* R 2.1. TX FIFO " o% W5 l, {7 w, `5 n
由上述的内容可知,当 TX FIFO 中的数据达到对应的阀值时,就会产生相应的中断,从而通知用户做出下一步的动作。对于可编程阀值而言,S2-LP 有专属的寄存器FIFO_CONFIG1、FIFO_CONFIG0 来配置这两个阀值,如下所示:
: {" _% T( @, \6 @$ j1. FIFO_CONFIG1[6:0]-->TX_AFTHR,用于设置 FIFO Almost Full 阀值
1 g9 ~. {( \) u" d7 E2. FIFO_CONFIG0[6:0]-->TX_AETHR,用于设置 FIFO Almost Empty 阀值
! q- i+ s7 a$ m  X$ d/ g8 r3 j" j( e5 l: O
' ^. \( J5 Z. F
由于 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。 0 h5 G2 D; P/ h/ t( G
) o' t7 c; n( S9 c0 Z
7 ^9 G6 E8 m- o) w( L: c  A
2.2. RX FIFO
  {0 o7 |6 X* I$ Z同理,当 RX FIFO 中的数据达到对应的阀值时,也会产生相应的中断 ,从而用户可以根据中断做出下一步的动作;S2-LP 有专属的寄存器 FIFO_CONFIG3、FIFO_CONFIG2 来配置这两个阀值,如下所示:( @8 e" y' g0 M+ R9 e8 J( g
1. FIFO_CONFIG3[6:0]-->RX_AFTHR,用于设置 FIFO Almost Full 阀值
! y% Z& _1 }! [  o$ N+ k- Y; F2. FIFO_CONFIG2[6:0]-->RX_AETHR,用于设置 FIFO Almost Empty 阀值 ; g7 S6 I) y; S; D6 y
但是,相较于 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 字节的数据获取到。 ' _0 p3 q* P; n0 d
- [! U' M4 B; A
3. 实验结果
  W  |. L" r  ?- d基于上述的内容,利用 S2-LP FIFO Almost Full 和 FIFO Almost Empty 的机制就可以实现大数据传输的场景,测试结果如下图 2 所示,其中对应的源码文件见下述的附件: ; z2 M) B- W3 c2 W: y
! X" X  |. {6 T; B- B

  I6 g( p8 y* s; J0 q GDGWW0K]_PE~4BC{O~C2LB0.png
" c5 g1 E! \5 [  a& G- ]7 b0 H/ O1 z. c

9 b5 d. f+ k9 q4 `, v: d0 [9 V) V其中测试结果中的 DATA_CORRECT 意思是说,发送的数据与接收的数据是一致的。
' J% u1 K$ a8 M# C" r* v
: @$ D* [" _) ]; D! y9 g 4. 小结
0 j# x6 L2 H5 h& K6 _: ]2 w2 P4 B本篇章重点描述了 FIFO Almost Full 和 Almost Empty 工作原理及特性,并利用该特性实现了 500 字节的数据透传。同时也给需要使用数据量比较大的应用场景,提供一个很好的参考样例。
5 h/ b% q9 \$ K# h' ?+ _6 s& e
; v" c- \7 _5 H1 p1 ?) L" P( \
5 f4 V# C3 \3 \3 a0 b1 Z! n# q
完整版请查看:附件 S2-LP的FIFO机制.pdf (269.21 KB, 下载次数: 2)
赞 收藏 评论0 发布时间:2023-2-17 14:35

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版