共2条
1/1 1 跳转至页
LPC2214,39VF160 LPC2214对39VF160编程的问题,请高手指教。

问
39VF160接到CS0,CFG0,PINSEL2也配置好了,但对39VF160的操作时发现两个问题。
1、ARM的A1连到了39VF160的A0上,那往0x5555写命令的时候是该往(0x8000000+0x5555)的地址上写呢,还是往(0x8000000+0x5555<<1)的地址上写,实验发现前面的写法是对的,但是有点想不明白。
2、方式1:
volatile uint16 *p1,*pa1,*pa2;
p1=(volatile uint16 *)0x80000000;
pa1=(volatile uint16 *)0x80005555;
pa2=(volatile uint16 *)0x80002AAA;
*pa1=0xaa;
*pa2=0x55;
*pa1=0x80;
*pa1=0xaa;
*pa2=0x55;
*p1=0x30;
do{temp=(*p1)&0x40; }while(temp!=((*p1)&0x40)); //等待擦除完毕
方式2:
volatile uint16 *p1,*pa1,*pa2;
p1=(volatile uint16 *)0x80000000;
*(p1+0x5555)=0xaa;
*(p1+0x2AAA)=0x55;
*(p1+0x5555)=0x80;
*(p1+0x5555)=0xaa;
*(p1+0x2AAA)=0x55;
*(p1)=0x30;
do{temp=(*p1)&0x40; }while(temp!=((*p1)&0x40));
两种方式应该没有什么区别,但是方式2行的通,方式1就是不行,还请高手解释下。 答 1: 还请问外部地址编码的问题。地址怎么对应到A23。。A1的,比如我用的16位总线,0x80000000是第一个字(两字节的起始地址),那第二个字的起始地址是0x80000001还是0x80000002呢? 答 2: 自己做了个FLASH烧写的程序,程序已经可以在外部FLASH里执行了。通过LPC2214工程模板,修改了分散加载文件,生成plain binary的二进制文件,通过内部FLASH的程序烧写到外部的39vf160中去,已经可以成功运行,但却有一个问题不太明白。
0x8000000,0x80000001分别对应外部FLASH的第一个字和第二个字,也就是说2214出的地址的最低位对应的是2214的A1,因为程序里就是按这样操作的,最后能运行说明是对的,但是周公的书上读写FLASH的时候地址总会左移一位不知道究竟哪种做法是对的?
1、ARM的A1连到了39VF160的A0上,那往0x5555写命令的时候是该往(0x8000000+0x5555)的地址上写呢,还是往(0x8000000+0x5555<<1)的地址上写,实验发现前面的写法是对的,但是有点想不明白。
2、方式1:
volatile uint16 *p1,*pa1,*pa2;
p1=(volatile uint16 *)0x80000000;
pa1=(volatile uint16 *)0x80005555;
pa2=(volatile uint16 *)0x80002AAA;
*pa1=0xaa;
*pa2=0x55;
*pa1=0x80;
*pa1=0xaa;
*pa2=0x55;
*p1=0x30;
do{temp=(*p1)&0x40; }while(temp!=((*p1)&0x40)); //等待擦除完毕
方式2:
volatile uint16 *p1,*pa1,*pa2;
p1=(volatile uint16 *)0x80000000;
*(p1+0x5555)=0xaa;
*(p1+0x2AAA)=0x55;
*(p1+0x5555)=0x80;
*(p1+0x5555)=0xaa;
*(p1+0x2AAA)=0x55;
*(p1)=0x30;
do{temp=(*p1)&0x40; }while(temp!=((*p1)&0x40));
两种方式应该没有什么区别,但是方式2行的通,方式1就是不行,还请高手解释下。 答 1: 还请问外部地址编码的问题。地址怎么对应到A23。。A1的,比如我用的16位总线,0x80000000是第一个字(两字节的起始地址),那第二个字的起始地址是0x80000001还是0x80000002呢? 答 2: 自己做了个FLASH烧写的程序,程序已经可以在外部FLASH里执行了。通过LPC2214工程模板,修改了分散加载文件,生成plain binary的二进制文件,通过内部FLASH的程序烧写到外部的39vf160中去,已经可以成功运行,但却有一个问题不太明白。
0x8000000,0x80000001分别对应外部FLASH的第一个字和第二个字,也就是说2214出的地址的最低位对应的是2214的A1,因为程序里就是按这样操作的,最后能运行说明是对的,但是周公的书上读写FLASH的时候地址总会左移一位不知道究竟哪种做法是对的?
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 |