搜索
bottom↓
回复: 11

用STM32F429的SPI4驱动W5500,SPI4的时钟没有输出

[复制链接]

出0入0汤圆

发表于 2023-3-26 14:28:07 | 显示全部楼层 |阅读模式
之前用了STM32F103+W5500可以用调试助手实现回环测试,然后把代码移植到STM32F429的SPI4上不行,用示波器调试发现F4的SPI4时钟线没有信号出来,所以怀疑是配置问题,但是看了很多遍没有结果,望大佬们指点一下:
void gpio_for_w5500_config(void)
{
        SPI_InitTypeDef  SPI_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI4,ENABLE);
       
        GPIO_PinAFConfig(GPIOE,GPIO_Pin_12,GPIO_AF_SPI4);
        GPIO_PinAFConfig(GPIOE,GPIO_Pin_13,GPIO_AF_SPI4);
        GPIO_PinAFConfig(GPIOE,GPIO_Pin_14,GPIO_AF_SPI4);


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOE, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//cs
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                       
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;       
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOE, &GPIO_InitStructure);
        GPIO_SetBits(GPIOE,GPIO_Pin_11);

        //这里只针对SPI口初始化
        RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI4,ENABLE);//复位SPI1
        RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI4,DISABLE);//停止复位SPI1
  /* SPI4 configuration */
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//SPI_CPOL_Low  SPI_CPOL_High
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//SPI_CPHA_1Edge  SPI_CPHA_2Edge
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI4, &SPI_InitStructure);
  SPI_Cmd(SPI4, ENABLE);
       
  /*定义RESET引脚*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                                               
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;                     
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);                 
  GPIO_SetBits(GPIOE, GPIO_Pin_10);               
  /*定义INT引脚*/       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                                                     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                    
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;                                     
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);                       
}
int main(void)
{
        Config_SystemClock(25, 360, 2, 4);
        systick_init(168);
        bsp_init();
        gpio_for_w5500_config();                                                //初始化MCU相关引脚
        reset_w5500();                                                                                        //硬复位W5500
        set_w5500_mac();                                                                                //配置MAC地址
        set_w5500_ip();                                                                                        //配置IP地址
        socket_buf_init(txsize, rxsize);                //初始化8个Socket的发送接收缓存大小


        while (1)
        {               
                SPI4_ReadWriteByte(0xff);
                delay_ms(200);
        }

}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2023-3-26 16:19:39 | 显示全部楼层
不要沉啊,找不到问题,硬件是好的可以确定,因为我在别人的能用的板子上写入我的代码

出0入475汤圆

发表于 2023-3-27 08:22:29 来自手机 | 显示全部楼层
F4没有spi输出和你w5500有啥关系嘛
那是你f4没有玩熟悉,先找几个spi例子熟悉了怎么操作spi再去和应用打交道呗,

出0入0汤圆

 楼主| 发表于 2023-3-27 12:16:51 | 显示全部楼层
1a2b3c 发表于 2023-3-27 08:22
F4没有spi输出和你w5500有啥关系嘛
那是你f4没有玩熟悉,先找几个spi例子熟悉了怎么操作spi再去和应用打交 ...
(引用自3楼)

对,现在就是找了很多例子,移植过来配置发现出不来时钟信号,能看下吗,我感觉该有的都有了额

出0入475汤圆

发表于 2023-3-27 14:53:51 来自手机 | 显示全部楼层
没用过这个芯片,
你去那些开发板啥原子正点,啥战舰,本坛就有,拿一个官方的demo看看呗,

出0入0汤圆

 楼主| 发表于 2023-3-27 15:42:45 | 显示全部楼层
1a2b3c 发表于 2023-3-27 14:53
没用过这个芯片,
你去那些开发板啥原子正点,啥战舰,本坛就有,拿一个官方的demo看看呗, ...
(引用自5楼)

就是拿的demo改的,非常纳闷

出0入0汤圆

发表于 2023-3-27 17:51:52 | 显示全部楼层
void spi_gpio_init(void)
{
        gpio_pin_conf_t spi_conf;
       
       
        _HAL_RCC_GPIOE_CLK_ENABLE();
       
        /* configure GPIOC_PIN_10 for SPI CLK functionality */
        spi_conf.pin = SPI_CLK_PIN;
        spi_conf.mode = GPIO_PIN_ALT_FUN_MODE;
        spi_conf.op_type = GPIO_PIN_OP_TYPE_PUSHPULL;
        spi_conf.pull = GPIO_PIN_PULL_DOWN;
        spi_conf.speed = GPIO_PIN_SPEED_MEDIUM;
       
        hal_gpio_set_alt_function(GPIOE,SPI_CLK_PIN,GPIO_PIN_AF5_SPI4);
        hal_gpio_init(GPIOE, &spi_conf);
       
        /* configure GPIOC_PIN_11 for SPI MISO functionality */
        spi_conf.pin = SPI_MISO_PIN;
        spi_conf.pull = GPIO_PIN_PULL_UP;
        hal_gpio_set_alt_function(GPIOE,SPI_MISO_PIN,GPIO_PIN_AF5_SPI4);
        hal_gpio_init(GPIOE, &spi_conf);
       
        /* configure GPIOC_PIN_12 for SPI MOSI functionality */
        spi_conf.pin = SPI_MOSI_PIN;
        spi_conf.pull = GPIO_PIN_PULL_UP;
        hal_gpio_set_alt_function(GPIOE,SPI_MOSI_PIN,GPIO_PIN_AF5_SPI4);
        hal_gpio_init(GPIOE, &spi_conf);
       
}

出0入0汤圆

发表于 2023-3-27 17:59:41 | 显示全部楼层
可以去GITHUB上搜个例子参考一下。

出0入0汤圆

 楼主| 发表于 2023-3-28 09:07:11 | 显示全部楼层
陆小凤之北京 发表于 2023-3-27 17:59
可以去GITHUB上搜个例子参考一下。
(引用自8楼)

都查遍了,仔细对比感觉没差别啊,该配置的都有了

出0入0汤圆

发表于 2023-3-28 10:55:44 | 显示全部楼层
chenweigang 发表于 2023-3-28 09:07
都查遍了,仔细对比感觉没差别啊,该配置的都有了
(引用自9楼)

SPI时钟没有使能吧。类似下面:


    __HAL_RCC_SPI1_CLK_ENABLE();

出0入0汤圆

 楼主| 发表于 2023-3-28 13:34:45 | 显示全部楼层
结题了,配置有个地方不对

出0入0汤圆

发表于 2023-12-9 11:17:12 | 显示全部楼层
chenweigang 发表于 2023-3-28 13:34
结题了,配置有个地方不对
(引用自11楼)

怎么结题的啊 说一下啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 00:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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