Fls的配置与调试
打开S32DS中包含的Example。
双击mex文件,来到引脚配置界面。
在引脚配置界面,先更新生成一下配置代码。
然后回到代码界面,配置代码已经生成好了。
打开主函数看看。
去外设配置界面,看看和Fls有关系的配置。
外设界面显示有报错,原因是RTD的版本号不匹配,需要进行修改。
修改为正确的版本号后,点击更新源代码,即可消除所有的错误。
可以看到和Fls外设配置有关的是名为Fls的组件。
回到主函数,可以看看主函数的内容结构。
1、初始化MCU时钟和模式。
2、Flash Driver的初始化
3、擦除指定的Flash的地址,例程里面擦除的是0x10000000这块地址,长度是8K,0x10000000是K312的Dflash的地址块,在S32K3xxRM手册里面是有说明的。
4、调用Fls_Erase()后并不会立即实现Flash的擦除,它必须配合Fls_MainFunction()的调用才行。
5、完成擦除后,就往0x10000000地址中写入一些数据内容。
6、调用了一个Fls_Compare()的函数进行期望写入数据和实际写入数据的比对,这里其实不用官方的Fls_Compare()函数也是可以,因为取DFlash的非限制性地址,可以直接使用指针。
7、调用Fls_Read()读取函数,读取0x10000000的内存数据,看看数据是否与写入的一样。
再去看看Fls的配置内容。
Debug看看例程的运行效果,可以看到当程序运行到断点1的位置的时候,0x10000000的内存块是存在此前遗留的数据的。接下来执行Fls_Erase()擦除后,看看效果。
当程序运行到断点2的位置的时候,0x10000000的内存块的数据全部被擦除为0xFF。
再次运行后,程序停止在断点3的位置,此时0x10000000内存块的数据仍为0xFF。
再次运行程序到断点4的位置,经过了Fls_Write()函数和Fls_MainFunction()函数后,此时可以看到0x10000000内存块被写入了有效的数据。
再次运行程序到断点5的位置,可以看到,程序顺利的通过了Fls_Compare()函数,完成了TxBuffer的数据和写入内存数据的比对,是完全一致的。
再次运行程序到断点6的位置,可以看到,程序经过了Fls_Read()函数后,将数据读取到了RxBuffer的数组的,数组中的值和内存中的数值是一样的。
到这里关于S32K312的Flash Driver的基础内容就完结了,Fls最常见的使用有,Fls的初始化Fls_Init(),Fls的擦除Fls_Erase(),Fls的写入Fls_Write(),Fls的读取Fls_Read()。