应用例程:用两片外置EEPROM(AT24C32)实现参数的冗余保存基本信息在STM32F103RCT6核心板最小系统的基础上,添加OLED液晶屏显示,并可以通过按键编辑两个参数:报警压力、报警液位。通过NvM模块,将这两个参数保存在两块不同的AT24C32芯片上。修改好参数后断电重启,观察参数是否保持不变。断开其中任意一块AT24C32的通讯线(模拟通讯故障),然后重新上电,观察参数是否依然保持不变 视频下载暂无 实验硬件STM32F103RCT6核心板(1块)[ 购买 ]: CH340E通讯小板(1块)[ 购买 ]: Micro-USB通讯线(1根)[ 购买 ]: OLED屏SSD1306(1块)[ 购买 ]: 8输入独立按键模块(1块)[ 购买 ]: 时钟与存储模块(2块)[ 购买 ]: 电路参考
关键配置说明添加NvM蓝图,然后在蓝图中分别添加以下模块:
在蓝图中选择模块I2C1_I2cL,确定I2C通讯管脚为PB6、PB7。 在蓝图中选择模块I2C2_I2cL,确定I2C通讯管脚为PB10、PB11。 在蓝图中选择模块I2c,在配置节点Device下面添加I2C通讯设备Device0和Device1,对应的底层分别为I2C1_I2cL、I2C2_I2cL。 在蓝图中选择模块AT24_Eep,在配置节点Chip下面添加两个存储芯片Chip0和Chip1。两个芯片的配置完全一样,芯片型号都是AT24C32,芯片地址都是0xA0。 在蓝图中重新选择模块I2c,查看系统自动生成的两个通讯任务:AT24_Eep_Chip0_I2c和AT24_Eep_Chip1_I2c。通讯速率都是100KHz,占空比是1:1。不同的是,Chip0使用的通讯设备是Device0,Chip1使用的通讯设备是Device1。 在蓝图中选择模块NvM_Fe,在配置节点Block下面添加一个用户可操作的数据块Block0。 在蓝图中选择模块NvM,查看系统自动生成的存储块NvM_Fe_Block0,修改大小为64字节。 在配置节点NvM_Fe_Block0下面,创建两个数据冗余块R0和R1。使用的底层都是Eep,模块都是AT24_Eep,每次写数据的份数为1,历史记录保留的份数为1。不同点在于,R0存放的存储芯片是Chip0,而R1存放的存储芯片是Chip1。 重新编译系统,在蓝图中选择模块MemIf,配置节点选择Block,查看系统生成的存储空间与地址分配。 输入输出和OLED屏的配置可参考下面的例程: 应用程序梯形图NETWORK 0 将参数编辑按键信息送入OLED液晶屏
NETWORK 1 启动时,利用启动信号SM0.1进行内存块的读操作,初始化变量VW100和VW102
NETWORK 2 M0.0每过200毫秒闭合一次
NETWORK 3 用M0.0触发数据保存操作,将VB100 ~ VB163写入存储块Block0
液晶屏配置实验步骤
指令说明补充说明使用MemIf模块,在数据有效性上提供了下列支持:
使用NvM模块,在数据有效性上提供了下列支持:
相关下载
|