OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6700|回复: 5

STM32F407ZE+LAN8720A硬件初步验证

[复制链接]

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-7-6
在线时间
8 小时
发表于 2017-7-6 10:54:12 | 显示全部楼层 |阅读模式
1金钱
硬件参考探索者F4如图所示
u8 LAN8720_Init(void)
{
        u8 rval=0;
        u16 m;
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOD,ENABLE);       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);     
        SYSCFG_ETH_MediaInterfaceConfig(SYSCFG_ETH_MediaInterface_RMII);

        GPIO_InitStructure.GPIO_Pin                = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Speed     = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_Mode      = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType    = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd       = GPIO_PuPd_UP ;  
        GPIO_Init(GPIOA, &GPIO_InitStructure);       
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_ETH);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_ETH);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_ETH);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOC, GPIO_PinSource1, GPIO_AF_ETH);
        GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_ETH);
        GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_ETH);

        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14;
        GPIO_Init(GPIOG, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOG, GPIO_PinSource11, GPIO_AF_ETH);
        GPIO_PinAFConfig(GPIOG, GPIO_PinSource13, GPIO_AF_ETH);
        GPIO_PinAFConfig(GPIOG, GPIO_PinSource14, GPIO_AF_ETH);
       
        GPIO_InitStructure.GPIO_Pin                 = GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Speed      = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_Mode         = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType     = GPIO_OType_PP;       
        GPIO_InitStructure.GPIO_PuPd         = GPIO_PuPd_NOPULL ;  
        GPIO_Init(GPIOD, &GPIO_InitStructure);
       
        LAN8720_RST=0;                                       
        for(m=0;m<10000;m++);
        LAN8720_RST=1;                               
        return !rval;                               
}


int main(void)
{       
        Hardware_Configuration();       
        devAddr_dau                = readDeviceAddr();                        //read device address
        devTypeAddr_dau        = readDeviceTypeAddr();                //read device type address
       
        LAN8720_Init();
        ETH_WritePHYRegister(0, 0, 0x5555);
        lan8720a_bcr        = ETH_ReadPHYRegister(0, 0);

        while(1)
        {
                if(devAddr_dau==0)
                {
                        debugeHardware();
                }
                else
                {

                }
                scanTimeValue();
                GPIO_ScanOutputCtr();               
        }
}

调试目的:LAN8720a写入读出寄存器能够正常操作
测试结果:BCR寄存器写入0x1234读出为0x0000
问题排查:测试LAN8720A晶振25MHZ起振
问题请教:1.根据原理图nINTSEL引脚(PIN2)=0, nINT/REFCLKO引脚(PIN14)是否应该测试到50MHZ波形?(目前测试不到)
               2.nINT/REFCLKO引脚(PIN14)如果没有50MHZ信号输入,MDIO/MDC引脚是否能够测试到信号?(目前测试不到)
               3.使用该程序实现LAN8720a寄存器写入读出,是否存在问题?
补充说明:板子IO输入输出、串口其它功能运行正常。
请熟悉的朋友发表意见,多多指教,谢谢!

LAN8720A.png
STM32F407ZE.png

最佳答案

查看完整内容[请看2#楼]

看内存,也没有超出呀? 刚刚在论坛里找到了答案: 如果是用了原子哥的程序,请修改下堆的大小。MEM1_MAX_SIZE参数改小点。[/backcolor] 类似于:[/backcolor] //mem1内存参数设定,mem1完全处于内部SRAM里面[/backcolor] #define MEM1_BLOCK_SIZE 32 //内存块大小为32字节[/backcolor] #define MEM1_MAX_SIZE 100*1024 //最大管理内存 80k[/backcolor] #defi ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2014-10-5
在线时间
17 小时
发表于 2017-7-6 10:54:13 | 显示全部楼层

结题

本帖最后由 yuangt 于 2017-7-17 16:30 编辑

看内存,也没有超出呀?

刚刚在论坛里找到了答案:

如果是用了原子哥的程序,请修改下堆的大小。MEM1_MAX_SIZE参数改小点。
类似于:

//mem1内存参数设定,mem1完全处于内部SRAM里面
#define MEM1_BLOCK_SIZE        32                          //内存块大小为32字节
#define MEM1_MAX_SIZE                100*1024         //最大管理内存 80k
#define MEM1_ALLOC_TABLE_SIZE MEM1_MAX_SIZE/MEM1_BLOCK_SIZE  //内存表大小
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165359
金钱
165359
注册时间
2010-12-1
在线时间
2110 小时
发表于 2017-7-7 01:00:38 | 显示全部楼层
8720底部有个GND焊盘,接上了么?
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-7-6
在线时间
8 小时
 楼主| 发表于 2017-7-7 09:05:23 | 显示全部楼层
正点原子 发表于 2017-7-7 01:00
8720底部有个GND焊盘,接上了么?

已经接上,焊盘留了过孔,从背面上锡,晶振已经起振,用示波器可以测试到25MHZ波形,如图1:晶振波形;图2:LAN8720A第14引脚(REFCLKO)。问         :按照原理图此时LAN8720A第14引脚(REFCLKO)应该能够测试到50MHZ信号?(没有测试到)
补充说明:示波器探针打到10X档。

25mhz

25mhz

REFCLKO信号引脚

REFCLKO信号引脚
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165359
金钱
165359
注册时间
2010-12-1
在线时间
2110 小时
发表于 2017-7-8 23:16:12 | 显示全部楼层
remy911 发表于 2017-7-7 09:05
已经接上,焊盘留了过孔,从背面上锡,晶振已经起振,用示波器可以测试到25MHZ波形,如图1:晶振波形;图 ...

MDIO能读取数据了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2014-10-5
在线时间
17 小时
发表于 2017-7-14 16:48:20 | 显示全部楼层
本帖最后由 yuangt 于 2017-7-17 12:02 编辑
正点原子 发表于 2017-7-8 23:16
MDIO能读取数据了么?

原子兄,我移植了你的8720以太网程序,主函数把while(lwip_comm_init()!=0);
一放上,就报错了,

最后查查定位到
p = mymalloc(0,1);
这个函数,主函数一旦加了这一句,就立马报错了,没加这句我的编译结果如下:


Build target 'KZQ_Ctrl_F4'
compiling main.c...
Hardware\main.c(43): warning:  #177-D: variable "p" was declared but never referenced
        char *p;
Hardware\main.c: 1 warning, 0 errors
linking...
Program Size: Code=55452 RO-data=656 RW-data=2772 ZI-data=326140  
FromELF: creating hex file...
"..\..\Output\KZQ_Ctrl.axf" - 0 Error(s), 1 Warning(s).







主函数加了  p = mymalloc(0,1);  这句后,编译结果如下:


Build target 'KZQ_Ctrl_F4'
compiling main.c...
Hardware\main.c(43): warning:  #550-D: variable "p" was set but never used
        char *p;
Hardware\main.c: 1 warning, 0 errors
linking...
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching common.o(.bss).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching torque.o(.bss).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching usart.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32f4xx.o(STACK).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching torque.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching common.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching key.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching display.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching malloc.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching display.o(.bss).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f4xx_rcc.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f4xx_it.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdout.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching errno.o(.data).
..\..\Output\KZQ_Ctrl.axf: Error: L6407E: Sections of aggregate size 0xb3f4 bytes could not fit into .ANY selector(s).
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 15 error messages.
"..\..\Output\KZQ_Ctrl.axf" - 15 Error(s), 1 Warning(s).
Target not created.




这是什么情况呀?我用的是stm32f407
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-12-18 21:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表