参照 RM0008 章节 31.6,在地址 0xE0042000 上读取芯片的识别码。发现奇怪的问题:
1、 用JTAG下载固件,下载完毕后自动运行,在main函数开头就读取并打印出来,就可以得到正确值:DEV_ID=414,REV_ID=1003 。之后不管是发命令,还是RESET,都可以读取到正确值。
2、 用JTAG下载固件,下载完毕后自动运行,先打印一些别的设备信息,再读取,就会得到错误值:DEV_ID=307,REV_ID=0000 。之后不管是发命令,还是RESET,读取到的都是这个错误的值。
3、 如果关闭电源,冷启动,就只能读取到0。之后不管是发命令,还是RESET,都只能读取到0。
4、 在不能读取到正确值的情况下,点击Keil编译器上那个调试按键,在线调试,运行一下,就恢复正常了。
好神奇吧?手册上说,其实这个0xE0042000 是一个镜像寄存器。是不是说:如果不使用JTAG下载或调试,JTAG逻辑部分没有正常运作,导致这个镜像寄存器没有正确内容,可否这样理解?可否用别的地址读取到这个ID?
|