OpenEdv-开源电子网

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

SPI配置的一些疑惑 信号有杂波

[复制链接]

5

主题

15

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-5-7
在线时间
15 小时
发表于 2019-6-6 00:04:44 | 显示全部楼层 |阅读模式
1金钱
用的是H7的板子 想SPI控制W5500做以太网通信现在的问题是  SCLK MOSI MISO的信号都有杂波 ,就是每个周期里混着一个不太正常的小波形。
MOSI用示波器看了下发送的 地址 控制 数据段都是对的,就是旁边有杂波
MISO  的波形看了下 地址 控制 数据段都不太对   

现在是初步怀疑  会不会是SPI配置的不太对 导致有杂波 然后  W5500识别不了正确信号了  
或者  W5500   的芯片初始化有问题? 但是已经换过一块W5500了 应该硬件焊接没问题
大家有什么建议吗? 可能会是什么问题?
SPI的频率设置过了 是低于外设最高频率的
SPI配置部分如下
void SPI_Configuration(void)
{
               
                SPI1_Handler.Instance=SPI2;                        
    SPI1_Handler.Init.Mode=SPI_MODE_MASTER;           
    SPI1_Handler.Init.Direction=SPI_DIRECTION_2LINES;  
    SPI1_Handler.Init.DataSize=SPI_DATASIZE_8BIT;      
    SPI1_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH;   
    SPI1_Handler.Init.CLKPhase=SPI_PHASE_2EDGE;         
    SPI1_Handler.Init.NSS=SPI_NSS_SOFT;                 
    SPI1_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2;
    SPI1_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB;      
    SPI1_Handler.Init.TIMode=SPI_TIMODE_DISABLE;        
    SPI1_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;
    SPI1_Handler.Init.CRCPolynomial=7;              
    HAL_SPI_Init(&SPI1_Handler);
    __HAL_SPI_ENABLE(&SPI1_Handler);                    
SPI1_ReadWriteByte(0x00);  

}



void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
{
    GPIO_InitTypeDef GPIO_Initure;
    RCC_PeriphCLKInitTypeDef SPI2ClkInit;


        SPI2ClkInit.PeriphClockSelection=RCC_PERIPHCLK_SPI2;            //éèÖÃSPI2ê±ÖóÔ′
         SPI2ClkInit.Spi123ClockSelection=RCC_SPI123CLKSOURCE_PLL;        //SPI2ê±ÖóÔ′ê1ó&#195LL1Q
                HAL_RCCEx_PeriphCLKConfig(&SPI2ClkInit);


          __HAL_RCC_GPIOI_CLK_ENABLE();       //ê1ÄüGPIOAê±Öó
    __HAL_RCC_SPI2_CLK_ENABLE();        //ê1ÄüSPI2ê±Öó
   
    //PA5,6,7
    GPIO_Initure.Pin=GPIO_PIN_1|GPIO_PIN_3;
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;              //¸′óÃíÆíìêä3ö
    GPIO_Initure.Pull=GPIO_PULLUP;                  //éÏà-
GPIO_Initure.Alternate=GPIO_AF5_SPI2;
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_VERY_HIGH;             //¿ìËù            
    HAL_GPIO_Init(GPIOI,&GPIO_Initure);
       
          GPIO_Initure.Pin=GPIO_PIN_2;
                GPIO_Initure.Mode=GPIO_MODE_INPUT;
                HAL_GPIO_Init(GPIOI,&GPIO_Initure);
}




void SPI2_SetSpeed(u32 SPI_BaudRatePrescaler)
{
    assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//ÅD¶ÏóDD§DÔ
    __HAL_SPI_DISABLE(&SPI1_Handler);            //1رÕSPI
    SPI1_Handler.Instance->CFG1&=~(0X7<<28);     //&#206;&#187;30-28&#199;&#229;á&#227;£&#172;ó&#195;à′éè&#214;&#195;2¨ì&#216;&#194;ê
    SPI1_Handler.Instance->CFG1|=SPI_BaudRatePrescaler;//éè&#214;&#195;SPI&#203;ù&#182;è
    __HAL_SPI_ENABLE(&SPI1_Handler);             //ê1&#196;üSPI



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 22:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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