Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
新手求教,如何使用enc28j60的驱动??
发布于 2015-05-16 01:06:26 浏览:4678
订阅该版
我这个板子上只有enc28j60的网口,使用的硬件SPI1,我想启用这个这个设备。但是不行:启动信息,先是e0设备什么失败,查看device列表,后直接用enc28j60()然后就直接崩了。。 ``` | / - RT - Thread Operating System / | 2.0.1 build May 15 2015 2006 - 2015 Copyright by rt-thread team To initialize device:e0 failed. The error code is -1 lwIP-1.4.1 initialized! finsh>>list_device() device type ref count -------- -------------------- ---------- e0 Network Interface 0 uart3 Character Device 0 uart2 Character Device 0 uart1 Character Device 2 0, 0x00000000 finsh>> finsh>>enc28j60() psr: 0x21000000 r00: 0x200028b0 r01: 0x10000000 r02: 0xf0000000 r03: 0x00000020 r04: 0x20000ad0 r05: 0x20000ac0 r06: 0x00000000 r07: 0x00000000 r08: 0x00000000 r09: 0xdeadbeef r10: 0xdeadbeef r11: 0xdeadbeef r12: 0x08009f5b lr: 0x080083c9 pc: 0x080083c8 hard fault on thread: tshell thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tcpip 0x0c suspend 0x000000d8 0x00000400 0x00000130 0x00000012 000 tshell 0x14 suspend 0x00000090 0x00000800 0x000001e8 0x00000007 000 etx 0x0f suspend 0x0000009c 0x00000200 0x0000009c 0x00000010 000 erx 0x0f suspend 0x00000094 0x00000200 0x00000094 0x00000010 000 tidle 0x1f ready 0x00000058 0x00000100 0x00000060 0x00000005 000 led 0x14 suspend 0x00000078 0x00000200 0x00000078 0x00000005 000 bus fault: SCB_CFSR_BFSR:0x04 IMPRECISERR ``` rtconfig.h配置: #define RT_USING_SPI #define RT_USING_ENC28J60 /* SECTION: lwip, a lighwight TCP/IP protocol stack */ #define RT_USING_LWIP 同时问句?如何在去掉原来的dm9000驱动,,,直接删除那个文件??还是在哪? ![无标题.png](https://oss-club.rt-thread.org/uploads/7435_7983032ee0341f7f462576a38ace035f.png)
查看更多
7
个回答
默认排序
按发布时间排序
pangwei
2015-05-16
这家伙很懒,什么也没写!
1 检查spi管脚是否正确,看你的list_device,spi总线并没有初始化 2 不会改SConscript文件的话,就直接删除文件即可
一页子亥
2015-05-18
这家伙很懒,什么也没写!
>1 检查spi管脚是否正确,看你的list_device,spi总线并没有初始化 > >2 不会改SConscript文件的话,就直接删除文件即可 --- 现在我把SPI启动了,但是还是不行呀: ``` nitialize rti_start:0 done | / - RT - Thread Operating System / | 2.0.1 build May 18 2015 2006 - 2015 Copyright by rt-thread team ENC28J60 PHY ID not correct! emac_rev:0 phy_rev:00 phy_pn:00 phy_id:00000000 do components intialization. initialize rti_board_end:0 done initialize eth_system_device_init:0 done initialize finsh_system_init:0 done initialize lwip_system_initlwIP-1.4.1 initialized! :0 done finsh>>list_device() device type ref count -------- -------------------- ---------- spi10 SPI Device 0 spi1 SPI Bus 0 uart3 Character Device 0 uart2 Character Device 0 uart1 Character Device 2 0, 0x00000000 finsh>>enc28j60() psr: 0x21000000 r00: 0x200028c0 r01: 0x10000000 r02: 0xf0000000 r03: 0x00000020 r04: 0x20000ae0 r05: 0x20000ad0 r06: 0x00000000 r07: 0x00000000 r08: 0x00000000 r09: 0xdeadbeef r10: 0xdeadbeef r11: 0xdeadbeef r12: 0x0800a0fb lr: 0x08008569 pc: 0x08008568 hard fault on thread: tshell thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tcpip 0x0c suspend 0x000000dc 0x00000400 0x000000dc 0x00000014 000 tshell 0x14 suspend 0x00000090 0x00000800 0x000001e8 0x00000007 000 etx 0x0f suspend 0x0000009c 0x00000200 0x0000009c 0x00000010 000 erx 0x0f suspend 0x00000094 0x00000200 0x00000094 0x00000010 000 tidle 0x1f ready 0x00000040 0x00000100 0x00000060 0x0000001b 000 led 0x14 suspend 0x00000078 0x00000200 0x00000078 0x00000005 000 bus fault: SCB_CFSR_BFSR:0x04 IMPRECISERR ``` enc28j60的接的IO如图:[attach]2437[/attach] 初始化SPI的代码: ``` SPI1: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); //----------------------------------------------------- GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //-------------------------------------------------------- //remap spi1 GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE); stm32_spi_register(SPI1, &stm32_spi, "spi1"); CS脚及中断: GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /* spi21: PB6 */ spi_cs.GPIOx = GPIOA; spi_cs.GPIO_Pin = GPIO_Pin_4; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = spi_cs.GPIO_Pin; GPIO_SetBits(spi_cs.GPIOx, spi_cs.GPIO_Pin); GPIO_Init(spi_cs.GPIOx, &GPIO_InitStructure); rt_spi_bus_attach_device(&spi_device, "spi10", "spi1", (void*)&spi_cs); /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource2); /* Configure ENC28J60 EXTI Line to generate an interrupt on falling edge */ EXTI_InitStructure.EXTI_Line = EXTI_Line7; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable the EXTI0 Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); 调用:enc28j60_attach("spi10"); ```
pangwei
2015-05-18
这家伙很懒,什么也没写!
建议你调通spi flash后,在去调28j60,确保spi总线无误。
weibo_qingchoul
2015-05-29
这家伙很懒,什么也没写!
>建议你调通spi flash后,在去调28j60,确保spi总线无误。 --- 你好,我也刚开始调enc28j60.在程序里有: ``` enc28j60_dev.emac_rev = spi_read(spi_device, EREVID); value = enc28j60_phy_read(spi_device, PHHID2); enc28j60_dev.phy_rev = value&0x0F; enc28j60_dev.phy_pn = (value>>4)&0x3F; enc28j60_dev.phy_id = (enc28j60_phy_read(spi_device, PHHID1) | ((value>>10)<<16))<<3; if(enc28j60_dev.phy_id != 0x00000000) { NET_DEBUG("ENC28J60 PHY ID not correct! "); NET_DEBUG("emac_rev:%d ", enc28j60_dev.emac_rev); NET_DEBUG("phy_rev:%02X ", enc28j60_dev.phy_rev); NET_DEBUG("phy_pn:%02X ", enc28j60_dev.phy_pn); NET_DEBUG("phy_id:%08X ", enc28j60_dev.phy_id); return RT_EIO; } ``` 这里的phyid 每次都不同,是因为什么情况呢?
aozima
2015-05-30
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
很明显这段代码是用来探测芯片的,ID都读不到,也不用考虑后续了。 也检查一下其它信息,如emac_rev是否能正确读出,并阅读数据手册这个版本是否有BUG,或这个版本读不到PHYID。
weibo_qingchoul
2015-05-30
这家伙很懒,什么也没写!
>很明显这段代码是用来探测芯片的,ID都读不到,也不用考虑后续了。 >也检查一下其它信息,如emac_rev是否能正确读出,并阅读数据手册这个版本是否有BUG,或这个版本读不到PHYID。 --- 今天重读了数据手册,然后调试了下发现昨天太困接错错了一条线,调整回来看初始化没有问题 id读取正确 。但依然ping不通,而且在创建socket时会在finsh打印 ``` [Tx] no empty buffer! ``` 对应代码如下: ``` if(tx_current->free == RT_FALSE) { NET_DEBUG("[Tx] no empty buffer! "); while(tx_current->free == RT_FALSE) { rt_err_t result; rt_uint32_t recved; /* there is no block yet, wait a flag */ result = rt_event_recv(&tx_event, 0x01, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &recved); RT_ASSERT(result == RT_EOK); } NET_DEBUG("[Tx] wait empty buffer done! "); } ```
撰写答案
登录
注册新账号
关注者
0
被浏览
4.7k
关于作者
一页子亥
这家伙很懒,什么也没写!
提问
1
回答
1
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
15
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
8
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部