硬件参考探索者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输入输出、串口其它功能运行正常。
请熟悉的朋友发表意见,多多指教,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原子兄,我移植了你的8720以太网程序,主函数把while(lwip_comm_init()!=0);
一放上,就报错了,
最后查查定位到
p = mymalloc(0,1);
这个函数,主函数一旦加了这一句,就立马报错了,没加这句我的编译结果如下:
Build target 'KZQ_Ctrl_F4'
compiling main.c...
Hardwaremain.c(43): warning: #177-D: variable "p" was declared but never referenced
char *p;
Hardwaremain.c: 1 warning, 0 errors
linking...
Program Size: Code=55452 RO-data=656 RW-data=2772 ZI-data=326140
FromELF: creating hex file...
"....OutputKZQ_Ctrl.axf" - 0 Error(s), 1 Warning(s).
主函数加了 p = mymalloc(0,1); 这句后,编译结果如下:
Build target 'KZQ_Ctrl_F4'
compiling main.c...
Hardwaremain.c(43): warning: #550-D: variable "p" was set but never used
char *p;
Hardwaremain.c: 1 warning, 0 errors
linking...
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching common.o(.bss).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching torque.o(.bss).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching usart.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32f4xx.o(STACK).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching torque.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching common.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching key.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching display.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching malloc.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching display.o(.bss).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f4xx_rcc.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f4xx_it.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdout.o(.data).
....OutputKZQ_Ctrl.axf: Error: L6406E: No space in execution regions with .ANY selector matching errno.o(.data).
....OutputKZQ_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.
"....OutputKZQ_Ctrl.axf" - 15 Error(s), 1 Warning(s).
Target not created.
这是什么情况呀?我用的是stm32f407
一周热门 更多>