8051系列问题
请问我能够在程序里读取Option Register吗?
请问Megawin的IC的Device ID要怎么读,每颗的ID是多少?
直接读取SCMD就可以了,当IFADRL为1时可读High Byte,IFADRL为0时可读Low Byte。
以下为Device ID表以及简单的Check Megawin IC Sample code.
IC Part number | MSB(High Byte) | LSB(Low Byte) |
MPC89x51 | 0xF0 | 0x01 |
MPC89x52 | 0xF0 | 0x02 |
MPC89x53 | 0xF0 | 0x04 |
MPC89x54 | 0xF1 | 0x04 |
MPC89x58 | 0xF1 | 0x08 |
MPC89x515 | 0xF1 | 0x10 |
MPC82x52 | 0xF2 | 0x02 |
MPC82x54 | 0xF3 | 0x04 |
MPC82G516 | 0xF4 | 0x10 |
char check_is_MPC82G516()
{
IFADRL = 0;
If(SCMD != 0x10)
Return FAIL;
IFADRL = 1;
If(SCMD != 0xf4)
Return FAIL;
Return SUCCESS;
}
请问使用第二组DPTR时是否有何限制?
什么是ISP 跟 ICP?
ISP & ICP是可以让您不需透过Writer也不需要将IC从板子上拆下来就可以更新固件的装置,详细说明如下:
ISP:首先,在使用ISP之前必须先将ISP的程序烧录至IC中(我们出厂就会先烧好了),当IC有Enable HWBS时,MCU Power On后就会先去执行ISP的程序,此时ISP程序会去侦测是否有插上ISP,有的话会等待Update,没有则跳回AP执行原程序。
ICP:功能跟ISP一样,不过不需要预烧ISP的程序,也不需要重新Power On就可以更新程序,唯只能使用在MPC82G516上。
我可以不要用ISP or ICP而直接用RS232来更新固件吗?
可以,请参考8051 ISP via COM port user manual.
特别注意的是请务必照其操作步骤来操作,操作步骤如下:
1.将ISP Code烧到您的IC的ISP Space区域里,并将HWBS Enable。(ISP_by_COM_v1.00.BIN)
2.将线路接好。RS232 Rx -> 8051 P3.0 and RS232 Tx -> 8051 P3.1
3.执行AP,并且关掉电源。
4.先按下Update Target,然后再打开电源。
请问使用ISP or ICP是要接那一只脚?
请问使用ISP or ICP时可以接多长?
测试如下:
测试线材为FLAT CABLE STYLE:2651 VW-1(跟IDE扁平电缆一样的线)
Length | ISP3.0 | ISP4.0 | ICP4.0 |
30cm | Pass | Pass | Pass |
1m | Pass | Pass | Pass |
2m | Pass | Pass | Pass |
3m | Pass | Pass | Fail |
4m | Pass | Pass | |
5m | Pass | Pass | |
6m | Fail | Pass | |
7m | Fail |
PS:以上测试不管是否有接上USB的结果都一样。
为何我的ISP无法更新?
1. 更新步骤是否正确?
ISP更新的步骤为:
将ISP Programmer插上计算机 ->
载入Hex or Binary file ->
按下”Update Programmer” ->
将ISP Programmer插至电路板 ->
打开板子的电源 ->
按下update bottom
或是以下步骤:
将ISP Programmer同时插上计算机及电路板 ->
载入Hex or Binary file ->
打开板子的电源 ->
按下”Updata Target”
2. 确定接线是否正确及硬件是否正常?
确定是否有正确将Vcc, Dat, Gnd接到MCU上的Vcc, P3.1, Gnd上,并确认MCU电压正确以及Crystal有起振成功,
如果P3.1有另做他用请参考ISP/ICP Programmer User Manual的第六章special note for ISP设计电路。
如有示波器,可以确认是否Vcc以及Rst是否正常,如果在使用ISP时Vcc有突波或是Rst有讯号导致MCU Reset则会无法使用ISP更新程序。
3. 确定IC内部是否有ISP code?
如果手上的IC是笙泉出货的新品都会有将ISP code烧录至IC内,如果无法确认是否为新品可以重新将ISP code烧录至IC内再做更新,烧录ISP code时需注意必须设定ISP memory为1K,Enable HWBS,并将ISP code (ISP_Code_vx.xx.BIN)烧至ISP的地址(ISP地址为IC的最后1K地址)
4. 测试ISP Programmer是否损坏?
将ISP Programmer插上计算机后是否亮黄灯及绿灯,如果不是则代表ISP损坏。
插上后灯号正常,可试试看加载一程序并按下Update Programmer看看是否能够执行,如果fail则代表ISP损坏。
Update ok后可试着按下update bottom并用示波器量Dat pin,看看是否一直停在high或是low,如果没有数据输出则代表ISP损坏。
请问使用ISP Programmer同时亮红灯跟绿灯时是什么意思?
亮绿灯:一开机的初始灯号以及更新成功之灯号。
红绿同时亮:程序在Erase IC之内容。
红绿闪烁:程序在烧录IC内容。
亮红灯:更新程序失败。
另外,在09年之后的MCU在更新程序前会对IC做While Chip Erase(此时红绿会同时亮一段时间)