这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 雅特力32位MCUAT32针对SPI的NSS功能配置分析

共1条 1/1 1 跳转至

雅特力32位MCUAT32针对SPI的NSS功能配置分析

菜鸟
2025-08-21 15:10:16     打赏

本文在国产雅特力32位MCU AT32开发库的基础上,针对SPI的NSS功能按照不同的工作模式展开介绍。

1)硬件NSS输出(SPI做主设备)
关键配置如下
  SPI_InitStructure.SPI_Mode = SPI_MODE_MASTER;
  SPI_InitStructure.SPI_NSSSEL = SPI_NSSSEL_HARD;///<set hardware nss
  SPI_Init(SPIx, &SPI_InitStructure);
  SPI_NSSHardwareOutputEnable(SPIx, ENABLE)///<enable the master nss output
此时SPIx将被配置为主设备,其NSS pin脚有效并配置为NSS输出控制,此时只要SPI一使能,其将恒定的在NSS线上输出低电平。


2)硬件NSS输入(SPI做主设备)
关键配置如下
  SPI_InitStructure.SPI_Mode = SPI_MODE_MASTER;
  SPI_InitStructure.SPI_NSSSEL = SPI_NSSSEL_HARD;///<set hardware nss
  SPI_Init(SPIx, &SPI_InitStructure);
  SPI_NSSHardwareOutputEnable(SPIx, DISABLE)///<disable the master nss output
此时SPIx将被配置为主设备,其NSS pin脚有效并配置为NSS输入检测,此时只要SPI一使能,其将不停的侦测NSS pin脚上的电平状态,只要检测到低电平,会立即产生模式错误并关闭SPI及清除主模式配置,若开启对应中断的话,会响应错误中断。


3)硬件NSS输入(SPI做从设备)
关键配置如下
  SPI_InitStructure.SPI_Mode = SPI_MODE_SLAVE;
  SPI_InitStructure.SPI_NSSSEL = SPI_NSSSEL_HARD;///<set hardware nss
  SPI_Init(SPIx, &SPI_InitStructure);
此时SPIx将被配置为从设备,其NSS pin脚有效并配置为NSS输入侦测,此时只要SPI一使能,其将不停的侦测NSS pin脚上的电平状态来筛选SCK线上的CLK(NSS pin脚为低时,SCK线上的边沿有效,反之无效)


4)软件NSS(SPI做主设备)
关键配置如下
  SPI_InitStructure.SPI_Mode = SPI_MODE_MASTER;
  SPI_InitStructure.SPI_NSSSEL = SPI_NSSSEL_SOFT;///<set software nss
  SPI_Init(SPIx, &SPI_InitStructure);
此时SPIx将被配置为主设备,其NSS pin脚无效,既不会输出NSS信号到pin脚上又不会侦测pin脚上的电平。实际将会由软件来实现内部NSS状态拉高(这一步AT库在SPI_Init函数内已完成),因此通常不需用户自己去控制内部NSS状态。


值得注意的是:如果使用的是配置寄存器的方式,要将内部NSS状态设为高。


5)软件NSS(SPI做从设备)
关键配置如下
  SPI_InitStructure.SPI_Mode = SPI_MODE_SLAVE;
  SPI_InitStructure.SPI_NSSSEL = SPI_NSSSEL_SOFT;///<set software nss
  SPI_Init(SPIx, &SPI_InitStructure);
此时SPIx将被配置为从设备,其NSS pin脚无效,既不会输出NSS信号到pin脚上又不会侦测pin脚上的电平。实际将会由软件将内部NSS状态拉低(这一步AT库在SPI_Init函数内已完成)。如果应用需要实时控制从设备是否参与通信,可通过调用如下其中一条命令来达到效果
SPI_NSSInternalSoftwareConfig(SPIx, SPI_ISS_SET);///<prohibit communication
SPI_NSSInternalSoftwareConfig(SPIx, SPI_ISS_RESET);///<permit communication



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]