1579|5

3241

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

STM32CubeMX生成硬件SPI1代码的问题 [复制链接]

先贴两段代码,第一段芯片是STM32F303ZET6:

/**
  * [url=home.php?mod=space&uid=159083]@brief[/url] SPI1 Initialization Function
  * @param None
  * @retval None
  */
static void MX_SPI1_Init(void)
{

  /* USER CODE BEGIN SPI1_Init 0 */

  /* USER CODE END SPI1_Init 0 */

  /* USER CODE BEGIN SPI1_Init 1 */

  /* USER CODE END SPI1_Init 1 */
  /* SPI1 parameter configuration*/
  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_ENABLE;
  hspi1.Init.CRCPolynomial = 7;
  hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN SPI1_Init 2 */

  /* USER CODE END SPI1_Init 2 */

}

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(RST_GPIO_Port, RST_Pin, GPIO_PIN_SET);

  /*Configure GPIO pin : CS_Pin */
  GPIO_InitStruct.Pin = CS_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(CS_GPIO_Port, &GPIO_InitStruct);

  /*Configure GPIO pin : RST_Pin */
  GPIO_InitStruct.Pin = RST_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(RST_GPIO_Port, &GPIO_InitStruct);

/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}

STM32F103标准库

void SPI_Configuration(void)
{
	GPIO_InitTypeDef 	GPIO_InitStructure;
	SPI_InitTypeDef   	SPI_InitStructure;	   

  	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);	

	/* 初始化SCK、MISO、MOSI引脚 */
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);

	/* 初始化CS引脚 */
	GPIO_InitStructure.GPIO_Pin = W5500_SCS;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_Init(W5500_SCS_PORT, &GPIO_InitStructure);
	GPIO_SetBits(W5500_SCS_PORT, W5500_SCS);

	/* 初始化配置STM32 SPI1 */
	SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;	//SPI设置为双线双向全双工
	SPI_InitStructure.SPI_Mode=SPI_Mode_Master;							//设置为主SPI
	SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;						//SPI发送接收8位帧结构
	SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;							//时钟悬空低
	SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;							//数据捕获于第1个时钟沿
	SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;								//NSS由外部管脚管理
	SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_2;	//波特率预分频值为2
	SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;					//数据传输从MSB位开始
	SPI_InitStructure.SPI_CRCPolynomial=7;								//CRC多项式为7
	SPI_Init(SPI1,&SPI_InitStructure);									//根据SPI_InitStruct中指定的参数初始化外设SPI1寄存器

	SPI_Cmd(SPI1,ENABLE);	//STM32使能SPI1
}

我有两个疑问:

1.是不是STM32F303有SPI,I2C等功能时,不需要设置AFIO功能。

2.我看STM32标准库初始化硬件SPI时,把相应管教初始化为

GPIO_Mode_AF_PP,而自动生成的代码没有。是不需要初始化还是要自己添上?

谢谢!

此帖出自stm32/stm8论坛

最新回复

谢谢分享!   详情 回复 发表于 2023-5-9 19:15
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复
举报

1142

帖子

24

TA的资源

纯净的硅(高级)

沙发
 

有的啊,见代码:

 

  • /* 初始化SCK、MISO、MOSI引脚 */
  • GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  • GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  • GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  • GPIO_Init(GPIOA, &GPIO_InitStructure);
  • GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
此帖出自stm32/stm8论坛

点评

我是说STM32F303ZET6,设置硬件SPI的时候,对应的IO口根本就没有初始化。 你说的大概是其他型号的吧    详情 回复 发表于 2023-5-6 14:56
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
fxyc87 发表于 2023-5-6 11:58 有的啊,见代码:   /* 初始化SCK、MISO、MOSI引脚 */ GPIO_InitStructure.GPIO_Pin = GPI ...

我是说STM32F303ZET6,设置硬件SPI的时候,自动生成的代码对应的IO口根本就没有初始化。

你说的大概是其他型号的吧

 

此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复

11

帖子

6

TA的资源

一粒金砂(中级)

4
 
好贴
此帖出自stm32/stm8论坛
 
 
 

回复

11

帖子

6

TA的资源

一粒金砂(中级)

5
 

希望大家多分享好的东西

此帖出自stm32/stm8论坛
 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

6
 

谢谢分享!

此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
[精典书籍]蓝牙核心技术(供通信行业研究开发人员参考)

本书系由参与蓝牙标准制定的两位成员撰写,共四个部分17章,内容涉及目前蓝牙无线技术所面临的挑战\应用模式\蓝牙协议栈\蓝牙协议 ...

【电子设计大赛】角度传感器应用文章集萃

这是在万方上下的角度传感器的一些文章,希望对大家有所帮助。 6117

wiggler板PCB

wiggler板PCB

电子工程师设计经验随笔

电子工程师必备基础知识(一) 运算放大器通过简单的外围元件,在模拟电路和数字电路中得到非常广泛的应用。运算放大器有好些个 ...

【奖品发送完毕】:有奖直播英飞凌工业半导体在电机驱动行业中的应用

【奖品发送完毕】 如有问题请联系管理员QQ:375277221 活动详情:有奖直播英飞凌工业半导体在电机驱动行业中的应用 ...

【NUCLEO-L552ZE测评】2. 资源

1 .开发环境 首先建议大家把ST的软件全家桶装上,我之前熟悉TouchGFX的时候走了好多弯路,装上全家桶后基本没多少环境 ...

如何设计支持任天堂SWITCH游戏机的转接底座?

任天堂的SWITCH游戏机自从2017年发布至今,销量直奔一亿台,没什么意外的话,将超过PS4的销售记录。这让一些在SWITCH刚发布时不 ...

关于EFR32BG22系列蓝牙连接成功率低的解决方法

本帖最后由 skywalker_lee 于 2021-3-25 09:33 编辑 采用EFR32BG22C112F352GM32进行蓝牙设备开发时,当Simplicity Studio的Bl ...

TL5728-IDK-A3板子与网口对应关系

# TL5728-IDK-A3板子与网口对应关系 566757 566758

B-U585I-IOT02A蓝牙问题解决

这个开发板的蓝牙问题已经困扰我很长时间了,可能所有开发板在出厂时都没有带STM32WB的蓝牙固件,所以使用STM32U585官方例程时一 ...

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表