以前写FLASH时一直没怎么注意分频系数FN的选择,都简单一句FCTL2=FWKEY + FSSEL0 +FN0;
后来做了一批产品后发现保存在FLASH信息段的数据偶尔会出错,一直没找到原因。
今天仔细检查的时候突然发觉,FCTL2寄存器有分频的设置,会不会是分频系数设置的问题?
我仔细查了下MSP430G2553的数据手册,发现FLASH有个闪存时序生成器频率fFTG为257-476kHz的说明。
对这个不怎么理解,是不是说,要写FLASH时,要配置FCTL2的分频系数到fFTG范围?
例如:
MCLK=1M时,分频系数要设置为FCTL2=FWKEY+FSSEL0+FN0+FN1;即3分频,得到的闪存频率就是300多k,符合fFTG范围。
MCLK=8M时,分频系数要设置为FCTL2=FWKEY+FSSEL0+FN3+FN4;即24分频,得到的闪存频率就是接近350k,符合fFTG范围。
上面的两个理解是不是正确?是不是配置正确的分频后,写FLASH数值就不会出错?
另外我以前MCLK一直设置为8M,分频配置为FCTL2=FWKEY + FSSEL0 +FN0;这样是不是就是导致偶尔FLASH数据错误的原因?做测试板的时候没发现这个问题,做出批量后才发现的。