完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
您好,我用的是DSP6713,在CE1空间接了一个Flash:AM29LV160D,但不知道为什么不论擦除,还是读写,CE1#片选信号都不拉低,请问哪些原因会导致这个问题?谢谢您的回答。
下面是我的程序: 主程序: Flash_StartAdd = 0x90000000; flash_chip_erase(); printf("Finish flash erase!!n"); // Write flash memory. for(i=0;i<0x400;i++) [ data = i;//fmod(i,0x10000); addr = (Flash_StartAdd+2*i); Write_Flash_Word(&data,&addr); ] printf("Write flash ok.n"); // Read flash memory. for(i=0;i<0x400;i++) [ addr = Flash_StartAdd+2*i; Read_Flash_Word(&data,&addr); if(data != fmod(i,0x10000)) [ printf(" Testing is Failure!n"); printf("Address 0x%x is error! Data is 0x%xn",i,data); exit(0); ] ] printf("Opereation is success.n"); 相关函数: #define FLASH_ADR1 (0x90000000+0x555<<1) #define FLASH_ADR2 (0x90000000+0x2AA<<1) #define Sourceaddr 0x90000000 #define Toggle_Bit 0x80 //0x40 /* d6 = 1 */ #define Hangup_Bit 0x20 /* d5 = 1 */ #define Pass_Flag 0 #define Fail_Flag 1 void flash_chip_erase() [ *(volatile Uint16*)FLASH_ADR1=0x012a;//0xaa; *(volatile Uint16*)FLASH_ADR2=0x0095;//0x55; *(volatile Uint16*)FLASH_ADR1=0x0100;//0x80; *(volatile Uint16*)FLASH_ADR1=0x012a;//0xaa; *(volatile Uint16*)FLASH_ADR2=0x0095;//0x55; *(volatile Uint16*)FLASH_ADR1=0x0010;//0x10; ] int Toggle_Bit_Check(Uint16 *addr) [ Uint16 toggle_data,read_data; toggle_data = *addr&Toggle_Bit; do[ if(((read_data = *addr) &Toggle_Bit) == toggle_data) break; toggle_data = read_data & Toggle_Bit; ]while((read_data&Hangup_Bit) != Hangup_Bit); toggle_data = *addr & Toggle_Bit; if(((read_data = *addr)&Toggle_Bit) != toggle_data) return (Fail_Flag); return (Pass_Flag); ] int Write_Flash_Word(Uint16 *data,Uint16 *address) [ *(volatile Uint16 *)FLASH_ADR1=0x012a;//0xaa; *(volatile Uint16 *)FLASH_ADR2=0x0095;//0x55; *(volatile Uint16 *)FLASH_ADR1=0x0120;//0xa0; *address=*data; return(Toggle_Bit_Check(address)); ] int Read_Flash_Word(Uint16 *data,Uint16 *address) [ *(volatile Uint16 *)FLASH_ADR1=0x012a;//0xaa; *(volatile Uint16 *)FLASH_ADR2=0x0095;//0x55; *(volatile Uint16 *)FLASH_ADR1=0x01b0;//0xf0; *data=*address; return(Toggle_Bit_Check(address)); ] |
|
相关推荐
3 个讨论
|
|
CE1没有变低的原因找到了,是程序写的有问题,没有在CE1空间。不过改了之后出现了新的问题,就是一点运行,程序执行到向flash写数据的位置,就卡死了。在点运行之前,CE1是高的,AWE#按照一定的频率有一个低电平的脉冲,AOE#一直为低。点运行开始往flash里写程序时,CE1和AWE#同时变低了,但一直就变低了,就卡死在那里了。CE1空间的配置在EMIF中直接写成了0xffffff13。这样在之前的旧板子上是可以读写flash的,不知道为什么换到新画的板子上就不行了?DSP可能其他部分没问题,但flash读写这块有问题吗?实在不知道是什么原因了。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
323 浏览 1 评论
513 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
386 浏览 1 评论
943 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2114 浏览 0 评论
31浏览 3评论
CC3100BOOST使用CC3200lunchXL进行烧录
892浏览 2评论
137浏览 2评论
174浏览 2评论
151浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-21 11:09 , Processed in 0.904212 second(s), Total 66, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号