完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
①PHY接口,《STM32网络电路设计》 ②MAC控制器,《STM32网络之MAC控制器》 ③DMA控制器,《STM32网络之DMA控制器》 本文将聚焦STM32网络的中断系统,简单聊一下中断系统和用法。 1、简介 网络中断向量:一个用于正常的网络操作,另一个当它映射到EXIT线路19的时候,用于以太网唤醒事件(带有唤醒帧或魔术数据包检测) 第一个网络中断保留为MAC和DMA产生的中断,正如在MAC中断和DMA中断部分。 第二个中断保留为唤醒事件时PMT产生的中断。唤醒事件对EXIT线路19的映射是造成STM32F20X和STM32F21X退出低功耗模式,并且产生中断。 当映射到EXIT线路19的以太网唤醒事件发生和,MACPMT中断使能并且有一个上升沿的EXIT线路19中断也被使能,他们都能唤醒中断。 可使用看门狗定时器(请参见ETH_DMARSWTR 寄存器)灵活控制RS 位(ETH_DMASR寄存器)。当此看门狗定时器使用非零值编程时,看门狗定时器激活,只要RXDMA完成发送一个接收的数据帧到系统存储,在没有触发接收状态,因为它不是使能的在相应的接收描述符(RDES1[31])(也就是:未在相应接收描述符(RDES1[31])使能接收状态)。当定时器按照编程值运行时,RS位被置1并且中断发生,如果ETH_DMAIER寄存器中相应位使能。看门狗定时失效在运行前,当数据帧被发送到内存,并且RS置1,因为定时器被使能为描述符。 注意: 读取PMT 控制和状态寄存器会自动将接收的唤醒帧和接收的魔术数据包PMT 中断标志清零。但是,由于用于这些标志的寄存器位于 CLK_RX域,因此在固件能发现此更新前可能有显著的延迟。当 RX 时钟很慢(在10 Mbit 模式)和当AHB 总线为高频时,该延迟会特别长。 由于从PMT 到CPU 的中断请求基于CLK_RX 域中的相同寄存器,所以即使在读取PMT_CSR 之后,CPU也可能错误地第二次调用中断例程。因此,可能需要固件轮询接收的唤醒帧和接收的魔术数据包位,并仅在发现它们都为‘0’时退出中断服务程序。 2、代码 STM32的网络中断,其实准确来说应该是网络专用的DMA的中断,网络中的数据包符合1518规则,也就是说是1460字节,MAC接收的数据包是2K字节,网络上每一个数据包MAC接收完都会产生中断。 官方代码是这样的 明显是使用查询的方式,没有使用到中断。 中断的使用方式如下: 配置网络中断 注释掉官方提供的查询部分的代码。 我们使用中断形式之后,代码是 这样的代码,我们在接收小于一个DMA描述符数据大小的数据没有问题,很流畅。 DMA描述符部分内容请看《STM32网络之DMA控制器》。 在接收大量数据的时候就会出现错误,接收的会缓慢,接收的过多会死机 解决办法是: 把if修改成while 这样就把整个数据包接收完之后再跳出中断,这样就解决了这个问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1154 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1185 浏览 1 评论
603 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
451 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1099 浏览 2 评论
1652浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
317浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
316浏览 3评论
309浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
284浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 04:14 , Processed in 0.808658 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191