STM32的SPI学习笔记

下面直接介绍SPI的STM32源码解析

GPIO_InitTypeDef GPIO_InitStructure;

//定义一个GPIO初始化的结构体变量

        SPI_InitTypeDef  SPI_InitStructure;

//定义一个SPI初始化的结构体变量


RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2,  ENABLE );
  //开启对应引脚时钟和SPI的时钟,一般的STM32有两个SPI(硬件SPI)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//配置SPI相应的端口,为复用推挽输出
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;   
// GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_IN_FLOATING;  
// GPIO_Init(GPIOB, &GPIO_InitStructure);
//上面程序时我做的一个测试将主机的MISO配置成输入,也是可行的,但是没弄懂他为什么都配置输出

  GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);


SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; 

//SPI在设置有几种模式,例如两线只读,1线只读,1线只写等,我们这里用的双线双向全双工

SPI_InitStructure.SPI_Mode = SPI_Mode_Master;

//SPI通讯时分为主机和从机,这个根据需求设定,一般为主机

SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;

//通讯数据位,就是一次传输数据的个数,可以是16位,也可是八位

SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;

SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

//这个是SPI的四种模式选择,第一个空闲状态电平的高低,顾名思义即看总线不发数据时电平是为高,还是为低

//第二个是数据在第几个边沿采集,看CLK的跳变是在哪一个,以上这些需要根据时钟时序来进行分析,时序分析可以直接搜四种模式的区别,有详细介绍

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

//NSS引脚控制是由软件控制,还是硬件,大多数都是软件控制,这个原因是因为STM32自身存在缺陷(网上查找资料说的)

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;

//这是SPI通讯的波特率,根据SPI通信时序图计算CLK的时钟周期长度,对应的转化为频率即可

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

//这个是设置SPI铜须数据是高位在前还是低位在前

SPI_InitStructure.SPI_CRCPolynomial = 7;
//这个是CRC校验计算的方式选择,一般没有用到可以注释掉
SPI_Init(SPI2, &SPI_InitStructure);  
//使能SPI

SPI_Cmd(SPI2, ENABLE); 

//开启SPI

SPI通讯中另一个需要注意的问题就是:SPI的MISO和MOSI,MISO是主设备数据输入,从设备数据输出,MOSI是主设备数据输出,从设备数据输入。即我们需要注意我们接线是,主机的MISO接从机的MISO,主机的MOSI接从机的MOSI。  

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于学习STM32CUBEMX,我可以提供一些学习笔记和建议。首先,了解STM32CUBEMX是什么以及它的作用。STM32CUBEMX是一个图形化的配置工具,用于快速生成STM32微控制器的初始化代码和配置文件。 以下是一些学习STM32CUBEMX的步骤和注意事项: 1. 安装和启动:首先,你需要下载并安装STM32CUBEMX软件。安装完成后,启动软件。 2. 选择芯片型号:在启动界面上,选择你要使用的STM32微控制器型号。如果你不确定选择哪个型号,可以查阅相关的STM32官方文档或参考资料。 3. 配置引脚:在主界面上,你可以看到一个引脚图,它显示了你所选芯片的引脚布局。通过拖拽和连接引脚,你可以配置外设的连接方式。 4. 配置时钟:在时钟配置选项卡中,你可以设置系统时钟和外设时钟。根据你的应用需求,选择合适的时钟源和分频系数。 5. 配置外设:在外设配置选项卡中,你可以启用或禁用各种外设,如UART、SPI、I2C等。你还可以配置它们的参数,例如波特率、数据位数等。 6. 生成代码:完成以上配置后,点击“生成代码”按钮,STM32CUBEMX将为你生成初始化代码和配置文件。你可以选择使用HAL库或标准外设库,以及选择你喜欢的开发环境。 7. 导入代码:将生成的代码导入到你的开发环境中,并进行编译和烧录。 除了以上步骤,还有一些额外的学习资源可以帮助你更好地理解和使用STM32CUBEMX。例如,你可以查阅官方文档、参考手册、应用笔记和示例代码等。 希望这些学习笔记对你有所帮助!如果你有更多问题,可以随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值