GPIO_StructInit(&GPIO_InitStruct); GPIO_InitStruct.GPIO_Direction = GPIO_PinInput; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6; GPIO_InitStruct.GPIO_Type = GPIO_Type_PushPull ; GPIO_InitStruct.GPIO_IPConnected = GPIO_IPConnected_Enable; GPIO_InitStruct.GPIO_Alternate = GPIO_InputAlt1 ; GPIO_Init(GPIO5,&GPIO_InitStruct); GPIO_StructInit(&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;//|GPIO_Pin_7; GPIO_InitStruct.GPIO_Direction = GPIO_PinOutput; GPIO_InitStruct.GPIO_Alternate = GPIO_OutputAlt2; GPIO_InitStruct.GPIO_Type = GPIO_Type_PushPull ; GPIO_InitStruct.GPIO_IPConnected= GPIO_IPConnected_Disable; GPIO_Init(GPIO5,&GPIO_InitStruct); GPIO_StructInit(&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7; //这个引脚自己控制 GPIO_InitStruct.GPIO_Direction = GPIO_PinOutput; GPIO_InitStruct.GPIO_Alternate = GPIO_OutputAlt1; GPIO_Init(GPIO5,&GPIO_InitStruct);
SSP_DeInit(SSP0); SSP_InitStructure.SSP_FrameFormat = SSP_FrameFormat_Motorola; SSP_InitStructure.SSP_Mode = SSP_Mode_Master; SSP_InitStructure.SSP_CPOL = SSP_CPOL_Low; SSP_InitStructure.SSP_CPHA = SSP_CPHA_1Edge; SSP_InitStructure.SSP_DataSize = SSP_DataSize_8b; SSP_InitStructure.SSP_ClockRate = 10; SSP_InitStructure.SSP_ClockPrescaler = 96;
SSP_Init(SSP0, &SSP_InitStructure); SSP_Cmd(SSP0, ENABLE);
发送接收
U8 enc28j60ReadOp(U8 op, U8 address) { U8 da; GPIO_WriteBit(GPIO5,GPIO_Pin_7,Bit_RESET) SSP_SendData(0x19); while(SSP_GetFlagStatus(SSP0, SSP_FLAG_Busy)==SET); //接收数据 SSP_SendData(SSP0,0X00); //发送一个无效数据=接收 while(SSP_GetFlagStatus(SSP0, SSP_FLAG_RxFifoNotEmpty)==RESET); da = SSP_ReceiveData(SSP0); GPIO_WriteBit(GPIO5,GPIO_Pin_7,Bit_SET); return(da); }
用逻辑分析仪观察,有数据回应,但发送接收返回的始终是0 不知道那里有错. |