stm32 spi nss硬件模式配置参考程序
<p>硬件平台:<span style="color: rgb(0, 112, 192);">STM32F429</span><br/>为了更加清楚的了解stm32 spi nss硬件模式的配置,这里以stm32f429为例,下面的程序就是spi nss硬件模式的配置参考程序,程序中使用了stm32f429标准库中的一些接口函数,该程序是经过测试可用的。</p><pre class="brush:cpp;toolbar:false PrismJs">/**
* @brief stm32f429 spi5 初始化
*
* @author Ailson Jack (www.only2fire.com)
* @date 2020-09-01
*
* @note spi5 引脚:
* PF6 - NSS
* PF7 - SCK
* PF8 - MISO
* PF9 - MOSI
*
* 在spi主模式下,nss硬件模式设置为输出模式时,使能spi模块,外部nss引脚会输出低电平;
* 禁止spi模块,外部nss引脚会输出高电平.
*/
void stm32f429_spi5_init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* 使能 SPI5 GPIO 时钟 */
RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOF, ENABLE);
/* 使能 SPI5 时钟 */
FLASH_SPI_CLK_INIT(RCC_APB2Periph_SPI5, ENABLE);
/* 设置引脚复用 */
GPIO_PinAFConfig(GPIOF, GPIO_PinSource6, GPIO_AF_SPI5); /* NSS */
GPIO_PinAFConfig(GPIOF, GPIO_PinSource7, GPIO_AF_SPI5); /* SCK */
GPIO_PinAFConfig(GPIOF, GPIO_PinSource8, GPIO_AF_SPI5); /* MISO */
GPIO_PinAFConfig(GPIOF, GPIO_PinSource9, GPIO_AF_SPI5); /* MOSI */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
/* 配置 NSS 引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_Init(GPIOF, &GPIO_InitStructure);
/* 配置 SCK 引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOF, &GPIO_InitStructure);
/* 配置 MISO 引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_Init(GPIOF, &GPIO_InitStructure);
/* 配置 MOSI 引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_Init(GPIOF, &GPIO_InitStructure);
/* 在禁止 spi 时,才可以对 spi 进行配置 */
SPI_Cmd(SPI5, DISABLE);
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_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Hard; /* nss 硬件模式 */
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI5, &SPI_InitStructure);
/* SPI nss 输出模式使能 */
SPI_SSOutputCmd(SPI5, ENABLE);
/* 使能 spi - nss 引脚输出低电平 */
SPI_Cmd(SPI5, ENABLE);
}</pre>
你可能也喜欢:
暂无评论,要不要来个沙发
发表评论
JLink V9掉固件修复(灯不亮) 3Zephyr笔记2 - 在STM32F429上运行HelloWorld 2计算NandFlash要传入的行地址和列地址 1Linux MMC子系统 - 6.eMMC 5.1工作模式-设备识别模式 0Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式 0Linux MMC子系统 - 4.eMMC 5.1常用命令说明(2) 0
标签云
Linux嵌入式实用技巧ARM内核学习问题集合CC++编程语言阅读笔记汇编Linux内核完全注释Windows驱动开发计算机基础ARM11ARMv7-ASTM32IDESublimeLinux内核学习eMMCMMC子系统Ubuntu操作系统OfficeVMWareAPUEgccRTOS中断漫游世界随笔感悟开发工具软件应用编程VsCodearmccarmclang编译器ZephyrSPIJLink网卡驱动安装各种芯片库函数NFSμCOS内核sambaFlashUnix命令与脚本输入法Linux内核设计与实现gitRIFFWAVJATGFTPar8161安装centos有线上网μCGUI字库工程建立右键菜单网络文件系统Firefox百度NTFS文件系统CodeBlocksCentOS数据结构算法PhotoShop51KeilQTUltraEditscanfglibc宏定义UIDGID优先级娱乐天地SourceInsight磁盘扇区总线I2CPDFBComparePythonI2SFPUMakefileSWDCPUARP软件推荐FileZilla