用STM32F429的SPI4驱动W5500,SPI4的时钟没有输出
之前用了STM32F103+W5500可以用调试助手实现回环测试,然后把代码移植到STM32F429的SPI4上不行,用示波器调试发现F4的SPI4时钟线没有信号出来,所以怀疑是配置问题,但是看了很多遍没有结果,望大佬们指点一下:void gpio_for_w5500_config(void)
{
SPI_InitTypeDefSPI_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_LowSPI_CPOL_High
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//SPI_CPHA_1EdgeSPI_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);
}
} 不要沉啊,找不到问题,硬件是好的可以确定,因为我在别人的能用的板子上写入我的代码 F4没有spi输出和你w5500有啥关系嘛
那是你f4没有玩熟悉,先找几个spi例子熟悉了怎么操作spi再去和应用打交道呗, 1a2b3c 发表于 2023-3-27 08:22
F4没有spi输出和你w5500有啥关系嘛
那是你f4没有玩熟悉,先找几个spi例子熟悉了怎么操作spi再去和应用打交 ...
(引用自3楼)
对,现在就是找了很多例子,移植过来配置发现出不来时钟信号,能看下吗,我感觉该有的都有了额 没用过这个芯片,
你去那些开发板啥原子正点,啥战舰,本坛就有,拿一个官方的demo看看呗, 1a2b3c 发表于 2023-3-27 14:53
没用过这个芯片,
你去那些开发板啥原子正点,啥战舰,本坛就有,拿一个官方的demo看看呗, ...
(引用自5楼)
就是拿的demo改的,非常纳闷 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);
} 可以去GITHUB上搜个例子参考一下。 陆小凤之北京 发表于 2023-3-27 17:59
可以去GITHUB上搜个例子参考一下。
(引用自8楼)
都查遍了,仔细对比感觉没差别啊,该配置的都有了 chenweigang 发表于 2023-3-28 09:07
都查遍了,仔细对比感觉没差别啊,该配置的都有了
(引用自9楼)
SPI时钟没有使能吧。类似下面:
__HAL_RCC_SPI1_CLK_ENABLE();
结题了,配置有个地方不对 chenweigang 发表于 2023-3-28 13:34
结题了,配置有个地方不对
(引用自11楼)
怎么结题的啊 说一下啊
页:
[1]