前言
STM32N6作为目前STM32的MCU系列中性能最强的型号,它的出现标志着微控制器领域进入了神经网络处理的新纪元。该系列集成了专门的神经处理单元NPU,能够以极低功耗高效运行复杂的深度学习算法,使边缘侧的人机交互和实时视觉处理能力得到了质的飞跃。
其主频高达800MHZ,有多组XSPI接口和外部存储进行高速通讯,XSPI的时钟推荐上限为200MHZ。
但是要让XSPI的时钟到达200MHZ并没有那么容易,本期我们来看看如何让提高系统XSPI时钟达到200MHZ上限来使用。
1、POWER
在修改XSPI时钟之前,我们需要了解STM32N6的电源域是什么样子的:
STM32N6的电源部分极其复杂,VDDIO2-VDDIO5部分,这四个独立电源专门为存储外设供电:
VDDIO2,VDDIO3用于XSPI部分的独立供电。
查看STM32N6570-DK的开发板原理图,VDDIO2/3是连接到了VDDA1V8中。
这里要注意的是,如果VDDIO2/3的默认配置是0即选择3.3V范围,而我们的实际连接电压为1.8V,IO则会工作在降级模式。尤其要注意的是接下面这句话,如果VDDIO设置为1工作在1.8V的时候,如果我们接3.3V则会烧坏芯片。
因此要让XSPI的速度到达200MHZ的主要工作就是修改VDDIO的工作范围。
2、OTP
STM32N6有着12032位一次性可编程OTP位用于系统配置。这12032位的OTP存储区域为开发者提供了极高的安全空间,能够永久锁定芯片的关键配置信息。一旦这些位被编程,其物理状态将不可逆转。
其中OTP124位是关于用户产品配置部分,我们来看看它的具体信息:
OTP124的13-16位用于配置VDDIO5~VDDIO2的工作模式配置。
VDDIO2/3想要处于1.8V工作范围必须要OTP124的对应选项位允许。
3、BESC
STM32N6的BSEC是启动与安全控制简称,用于管理OTP阵列的访问。
非易失性秘密信息存储在 BSEC 的上部区域,该区域仅在 BSEC 处于“BSEC-closed”状态时才可访问。当 BSEC 状态切换为“BSEC-open”时,这些非易失性秘密将被永久隐藏。
也就是说BSEC是一种“阅后即焚”或“闭门取物”的安全机制。芯片在上电启动的瞬间,门是关着的,此时 CPU 可以进屋拿走保险箱里的密钥。一旦启动完成,为了防止黑客在后续运行中窃取密钥,门就会被推开,但这时保险箱会被特殊的物理挡板遮住,无论如何都读不到了。
所以光配置OTP阵列是一方面,还要使能BSEC让系统在上电的时候能够得到芯片的OTP信息。
二者一起作用才能让系统的VDDIO成功工作在1.8V范围。
4、CubeMX的设置
在CubeMX中,我们要下面设置:
在CubeMX中找到PWR选项,Features中打开WKUP1 pin protection。
接着开启I/O voltage range selection选项,在Parameter Settings中将VDDIO2还有VDDIO3设置为1.8V。
之后就可以将XSPI的时钟设置为200MHZ,接着使能BSEC功能。
这样子我们就完成了CubeMX的配置。
5、OTP124更改
板子进入DEV模式之后,打开CubeProgram,找到OTP选项:
改写OTP124的值,让HSLV_VDDIO3还有VDDIO2置1,这样子就可以成功让XSPI工作在200MHZ.
213