本帖最后由 jinyi7016 于 2015-9-8 22:02 编辑
纯个人开发经历中的经验、出错及解决,纯手打文字方式,杜绝“Ctrl+C”、“Ctrl+V”,多多支持,收藏备用。
背景
用Ke02读取计量芯片的电压、电流、功率、电能、频率等数据,一般情况下正常,偶有一次收到一个很大的数据,而且有时电能会是一个非常大的数据,只有电能的读取是0xffffffff,其他数据也会相应的大也只是某一个字节为0XFF。
要是多空读一次,的话,原来错的对了,但大部分时候是错的。
解决
SPI用了中断,改用查询方式,除电能外,其他的数据可以读取正常,则是中断的问题。
去掉其他所有中断,而用中断读取,仍有错。不是中断优先级的问题。
仔细查看SPI的中断函数,发现在中断中把RX,TX都有过关,开的操作,改成让RX一至打开 后,读取 正确。
电能读取为0xffffffff,一般发生在刚上电读取 的时候,其他没有什么改变,于是将电能读取后加判断,电能也正确了。
延伸
对于中断,有它的方便之处,也有它的不便之处,在开关上,协议上的处理要格外小心,否则会出很多莫名其妙的问题。
电能的错误,就是说不要对所有的数据手册都迷信不疑,手册也有出错的时候
|