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

STM32网络之中断

[复制链接]
STMCU小助手 发布时间:2021-2-5 10:00
STM32网络之中断
2 k0 |+ j1 v" m. W! G9 ^
之前的推文已经将STM32网络的三大件讲完了

6 J7 |/ q7 c5 m
3.1.jpg

/ {6 ~1 p. F1 |7 y& g- x& `
①PHY接口,《STM32网络电路设计》
②MAC控制器,《STM32网络之MAC控制器》
③DMA控制器,《STM32网络之DMA控制器》
: M# R+ h" v9 Y, {4 e! z* ^
本文将聚焦STM32网络的中断系统,简单聊一下中断系统和用法。
  G$ e/ C; P. a8 ~0 B: H
1.    简介
网络中断向量:一个用于正常的网络操作,另一个当它映射到EXIT线路19的时候,用于以太网唤醒事件(带有唤醒帧或魔术数据包检测)
) w; U% P) I% R  Z
第一个网络中断保留为MAC和DMA产生的中断,正如在MAC中断和DMA中断部分。

5 b, T$ p: S: \8 _! }9 Y
第二个中断保留为唤醒事件时PMT产生的中断。唤醒事件对EXIT线路19的映射是造成STM32F20X和STM32F21X退出低功耗模式,并且产生中断。
当映射到EXIT线路19的以太网唤醒事件发生和,MACPMT中断使能并且有一个上升沿的EXIT线路19中断也被使能,他们都能唤醒中断。

6 w) }8 x7 m& g; U6 M
可使用看门狗定时器(请参见ETH_DMARSWTR 寄存器)灵活控制RS 位(ETH_DMASR寄存器)。当此看门狗定时器使用非零值编程时,看门狗定时器激活,只要RXDMA完成发送一个接收的数据帧到系统存储,在没有触发接收状态,因为它不是使能的在相应的接收描述符(RDES1[31])(也就是:未在相应接收描述符(RDES1[31])使能接收状态)。当定时器按照编程值运行时,RS位被置1并且中断发生,如果ETH_DMAIER寄存器中相应位使能。看门狗定时失效在运行前,当数据帧被发送到内存,并且RS置1,因为定时器被使能为描述符。
8 i2 p# o5 F# E8 K/ I
注意:
读取PMT 控制和状态寄存器会自动将接收的唤醒帧和接收的魔术数据包PMT 中断标志清零。但是,由于用于这些标志的寄存器位于 CLK_RX域,因此在固件能发现此更新前可能有显著的延迟。当 RX 时钟很慢(在10 Mbit 模式)和当AHB 总线为高频时,该延迟会特别长。
由于从PMT 到CPU 的中断请求基于CLK_RX 域中的相同寄存器,所以即使在读取PMT_CSR 之后,CPU也可能错误地第二次调用中断例程。因此,可能需要固件轮询接收的唤醒帧和接收的魔术数据包位,并仅在发现它们都为‘0’时退出中断服务程序。

1 F2 o8 x( g; h
2.    代码
STM32的网络中断,其实准确来说应该是网络专用的DMA的中断,网络中的数据包符合1518规则,也就是说是1460字节,MAC接收的数据包是2K字节,网络上每一个数据包MAC接收完都会产生中断。
, j* S1 o$ {) {5 I# X* C4 E& O' h
官方代码是这样的:

; I& ^# Y: G* X# O* f, A
3.2.png

6 U( ], {8 _  o/ r
明显是使用查询的方式,没有使用到中断。
! K; S" u8 r( \
中断的使用方式如下:

  u  c: L) a+ w: h. e+ c" n5 g
配置网络中断

# F- c9 c1 {9 M( o
3.3.png

1 K9 ?! R$ p, U' T
注释掉官方提供的查询部分的代码。
) H8 t; a7 r1 f- [1 h! a& z- {- p- S
3.4.png

- n, m  |0 J4 r: W
我们使用中断形式之后,代码是

! W/ R" N* \, g) Z1 y
3.5.png

6 P6 H9 L% }5 [  I
这样的代码,我们在接收小于一个DMA描述符数据大小的数据没有问题,很流畅。
) h8 e8 s' Q' T, f1 J. }9 a
DMA描述符部分内容请看《STM32网络之DMA控制器》。
: U0 V' g/ [9 L' T1 M* M: n
在接收大量数据的时候就会出现错误,接收的会缓慢,接收的过多会死机

; f  M% `# M- F" v
解决办法是:
9 t5 j( G" k6 Z
把if修改成while

* t7 y0 x3 ^9 O2 L  |4 m: Z
3.6.png

/ X0 b& Q: i* _
这样就把整个数据包接收完之后再跳出中断,这样就解决了这个问题。
, j. J5 I5 q4 M! t3 E
文章出处: 知晓编程

1 q5 x4 R( |) O& z2 I
赞 收藏 评论0 发布时间:2021-2-5 10:00

举报

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