阅读:2353回复:4
D12初始化请教
我的程序执行时可以看到LED在闪,说明D12没坏,应该可以推断出D12可以跟我的ARM通信,但是读出ID为0x1212,读出的中断寄存器为0x4040,就是对D12进行读中断寄存器以及短点最后处理状态后再读中断积存器仍然为4040,不知道怎么回事,请各位给个帮助,小弟先谢了,初始化程序如下所示:
Init_D12Port(); //始化PDIUSBD12与LPC2200的连接的硬件配置 Rst_D12(); //复位PDIUSBD12 reconnect_USB(); //重新连接USB D12_ReadInterruptRegister(); /*D12_ReadInterruptRegister(); D12_ReadLastTransactionStatus(0); D12_ReadLastTransactionStatus(1); D12_ReadLastTransactionStatus(2); D12_ReadLastTransactionStatus(3); D12_ReadLastTransactionStatus(4); D12_ReadLastTransactionStatus(5); D12_ReadInterruptRegister(); */ if (readchipid() != 0x1012) //读取芯片ID号,如果不为 1012H return 1; //则复位失败 |
|
沙发#
发布于:2007-06-15 09:35
怎么没人理我啊,可以控制softconnect是不是可以判断D12根我的MCU可以 正常通信?即时序没问题?硬件连接方面业没问题?那为什么度ID每次都是1212那?请好心人给个指导或者提示
![]() |
|
板凳#
发布于:2007-06-28 11:22
|
|
地板#
发布于:2007-06-28 17:21
楼主: D12初始化求救
我的CPU是2220,按照2210开发板做了D12,可以控制softconnect,因为可以看到LED在闪,可是每次读D12的 ID都为0x1212,但是用FB命令设置DMA后,然后再读出是对的,也就是读两个字节就错,而且第二个字节跟第一个字节一样,读D12中断寄存器就为 0x4040,这个问题我找了很久不知道怎么回事.我在内存里看,当发送读ID命令FD的时候发现从0x82000000(包括)以后的内存区全变为 0x1212,而我用好的开发板44B0(D12 USB可以正常运行)发现,当发送FD命令后,相应的内存区(由于CS不同,这里是0x2000000)0x2000000为0x12,0x2000001为0x10,以后的全为0.补充一下,用FB命令发现设置后, 0x82000000以后的内存区域也全部为所设置的值,而不是就只有0x82000000 这个地址上为设置的值,郁闷啊,请ZLG给解释一下啊,都急死了,2210跟2220是兼容的吧在这里? straw_2005 发表于 2007-6-17 13:01 ZLG-ARM ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖 2楼: 补充相关图片 我用的是ZLG提供的代码,也就是2200开发板光盘里的代码 44B0发送FD命令后 0x02000000 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x02000010 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x02000020 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x02000030 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x02000040 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x02000050 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2220发送FD命令后 0x82000000 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 0x82000010 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 0x82000020 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 0x82000030 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 0x82000040 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 smartcode 发表于 2007-6-18 08:32 ZLG-ARM ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖 3楼: 可能是时序问题 D12要求片选信号比读写信号慢结束,而ARM的片选和读写信号是同时开始、同时结束的,所以要在硬件上加延时。 如果上面这点你有做到,那还有可能是你把BANK总线读写速度配置的太快了,速度降低一点试一下。 straw_2005 发表于 2007-6-18 13:39 ZLG-ARM ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖 4楼: 谢谢关注 恩好的,晚上回去我按照你说的仔细看看,多谢关注哦 straw_2005 发表于 2007-6-18 15:03 ZLG-ARM ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖 5楼: 一问 D12要求片选信号比读写信号慢结束,而ARM的片选和读写信号是同时开始、同时结束的,所以要在硬件上加延时。----------->我查了下datasheet,参数如下 Symbol Parameter Min Max Unit d12:tRHCH RD_N HIGH to CS_N (DMACK_N) HIGH time 5 - ns 2220:tCSHOEH CS HIGH to OE HIGH -5 5 ns 也就是说D12跟LPC2220在读时序上应该是匹配的,应该不需要加硬件延时吧?速度配置我再看代码! 这个问题希望大家能继续讨论下去! straw_2005 发表于 2007-6-25 19:10 ZLG-ARM ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖 6楼: 请教 (7)工程模板配置外部RAM和外部FLASH ROM总线的访问速度是适应于大部分型号的RAM与FLASH ROM的。对于EasyARM2200开发板上的RAM与FLASH ROM的型号,必须重新配置控制总线有关参数的BCFG0和BCFG1寄存器,这样程序的运行速度才能跟上PDIUSBD12的运行速度。这些值的配置的具体方法见LPC2200数据手册以及你所使用的RAM与FLASH ROM的数据手册。程序的运行速度主要与CPU主频与外部RAM、FLASH速度相关。这方面在模板的target.c的TargetResetInit ()函数中修改。如程序清单1所 #ifdef __DEBUG //开发板上JP6接为:Bank0-RAM,Bank1-Flash,JP7接为:OUTSIDE MEMMAP = 0x3; //remap BCFG0 = 0x10000400; //外部RAM BCFG1 = 0x10000460; //外部Flash #endif #ifdef __OUT_CHIP //开发板上JP6接为:Bank0-Flash,Bank1-RAM,JP7接为:OUTSIDE MEMMAP = 0x3; //remap BCFG0 = 0x10000460; //外部FLASH BCFG1 = 0x10000400; //外部RAM #endif #ifdef __IN_CHIP //开发板上JP6接为:Bank0-RAM,Bank1-Flash,JP7接为:INSIDE MEMMAP = 0x1; //remap BCFG0 = 0x10000400; //外部RAM BCFG1 = 0x10000460; //外部Flash #endif 请问大侠们下面是什么意思:我的问题可能是这里么?特别请ZLG看下 对于EasyARM2200开发板上的RAM与FLASH ROM的型号,必须重新配置控制总线有关参数的BCFG0和BCFG1寄存器,这样程序的运行速度才能跟上PDIUSBD12的运行速度。 straw_2005 发表于 2007-6-27 22:58 ZLG-ARM ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖 7楼: 失望 没有人知道这个问题么?我对CLKOUT设置后用示波器看了,CLKOUT是可以设置进去的,可就是读ID始终不对, ZLG的支持感觉也不过如此啊,连这个问题也不敢答复一下郁闷 |
|
地下室#
发布于:2007-07-05 23:05
一看就知道你没关CACHE,或者把所在地址范围DISABLE CACHE.
我的问题才头大呢. |
|