打印
[应用相关]

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

[复制链接]
33|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我想看大海|  楼主 | 2024-11-20 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本文在国产雅特力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


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

282

帖子

0

粉丝