配置STM32F103VET6+ENC28J60 遇到问题

发布于 2019-08-14 19:48:16    浏览:955
    本帖最后由 aozima 于 2019-8-19 14:01 编辑


配置方法参考了帖子:[ 学习 ] STM32 HAL enc28j60 初始化配置
配置以后错误 。
调试信息如下:

\ | /
- RT - Thread Operating System
/ | \ 4.0.1 build Aug 14 2019
2006 - 2019 Copyright by rt-thread team
lwIP-2.0.2 initialized!
psr: 0x21000000
r00: 0x080148b0
r01: 0x00000000
r02: 0x00000001
r03: 0x00000000
r04: 0x080228f0
r05: 0xdeadbeef
r06: 0x00000000
r07: 0x00000004
r08: 0x080148b0
r09: 0xdeadbeef
r10: 0x080148b8
r11: 0xdeadbeef
r12: 0x00000000
lr: 0x0801502f
pc: 0x0801502e
hard fault on thread: main



thread pri status sp stack size max used left tick error
-------- --- ------- ---------- ---------- ------ ---------- ---
tcpip 10 ready 0x000000a8 0x00000400 16% 0x00000014 000
etx 12 ready 0x00000044 0x00000400 06% 0x00000010 000
erx 12 ready 0x00000044 0x00000400 06% 0x00000010 000
tidle0 31 ready 0x00000044 0x00000100 26% 0x00000020 000
main 10 running 0x000000b0 0x00000800 16% 0x00000010 000
bus fault:
SCB_CFSR_BFSR:0x04 IMPRECISERR




查看更多

7 个回答
flyboy
flyboy 2019-08-14
This guy hasn't written anything yet
我之前貌似遇到过,当时好像是硬件没接好,不知道楼主是不是这个问题。。。
Hu_XianShen
Hu_XianShen 2019-08-15
This guy hasn't written anything yet
flyboy 发表于 2019-8-14 20:20
我之前貌似遇到过,当时好像是硬件没接好,不知道楼主是不是这个问题。。。 ...


硬件方面没有查到问题所在!不接enc28j60的模块,程序在开发板上裸跑也是报这种错误;这样看来像是模块坏了?官方的这个模块从哪里能买到?有没有连接?
Hu_XianShen
Hu_XianShen 2019-08-16
This guy hasn't written anything yet
    本帖最后由 aozima 于 2019-8-19 14:02 编辑


flyboy 发表于 2019-8-14 20:20
我之前貌似遇到过,当时好像是硬件没接好,不知道楼主是不是这个问题。。。 ...

参考ENC28J60 以太网模块例程
env开启 驱动 spi -> enc28j60
片上外设 spi->spi1 TX DMA,RX MDA.

添加代码如下:
#include 
#include
#include "drv_spi.h"
#include "board.h"

#define PIN_NRF_IRQ 70 //STM32F103VET6 PE6

int enc28j60_init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
rt_hw_spi_device_attach("spi1", "spi10", GPIOA, GPIO_PIN_4);

/* attach enc28j60 to spi. spi21 cs - PD6 */
enc28j60_attach("spi10");

/* init interrupt pin */
rt_pin_mode(PIN_NRF_IRQ, PIN_MODE_INPUT_PULLUP);
rt_pin_attach_irq(PIN_NRF_IRQ, PIN_IRQ_MODE_FALLING, (void(*)(void*))enc28j60_isr, RT_NULL);
rt_pin_irq_enable(PIN_NRF_IRQ, PIN_IRQ_ENABLE);

return 0;
}
INIT_COMPONENT_EXPORT(enc28j60_init);



调试信息如下:
\ | /
- RT - Thread Operating System
/ | \ 4.0.1 build Aug 16 2019
2006 - 2019 Copyright by rt-thread team
lwIP-2.0.2 initialized!

到这里程序就死了,仿真调试,程序死的位置如下 图:
1565937960(1).jpg

看了很多帖子也没明白问题出在哪!
jamguo
jamguo 2019-08-19
This guy hasn't written anything yet
Hu_XianShen 发表于 2019-8-16 15:00
参考ENC28J60 以太网模块例程
env开启 驱动 spi -> enc28j60
片上外设 spi->spi1 TX DMA,RX MDA.


看这个错误代码 貌似是SPI状态位没处理好,是不是线子没接好呀?
Hu_XianShen
Hu_XianShen 2019-08-22
This guy hasn't written anything yet
注释函数 enc28j60_attach( "spi20"); 控制台 list_device 显示 spi2、spi20 都 ok ,运行 enc28j60_attach( "spi20"); 程序死在spi_send 处,示波器测:rest脚为高,spi 的clk、mosi、miso引脚均无信号;单片机没有信号发出,像是spi根本没有工作,这是什么原因?
Hu_XianShen
Hu_XianShen 2019-10-28
This guy hasn't written anything yet
11.jpg

填坑,这里必须开启qspi,
Hu_XianShen
Hu_XianShen 2019-10-28
This guy hasn't written anything yet
这样问题就解决了。

撰写答案

请登录后再发布答案,点击登录
关注者
0
被浏览
955

发布
问题

分享
好友

手机
浏览

扫码手机浏览