打印
[STM32F1]

FSMC-PCCard模式下地址输出出错,请网友指导。

[复制链接]
3101|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lhy317409772|  楼主 | 2015-1-9 08:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lhy317409772 于 2015-1-9 09:00 编辑

该问题已经卡住项目不动近半个多月,真诚的希望大家能够给些意见。
问题描述如下:
硬件采用STM32作为主控,PCL6045BL作为运控,之间采用FSMC的PCCard模式进行通讯,16位地址总线,FSMC_A[4:1]---PCL_A[4:1],基地址为0x90000000,写指令为#define outpw(address,data) (*(unsigned short *)(address)=(data))....
问题是,数据总线呈现出来的高低电平为正确的,但是4位地址总线的电平是错误的,错误的方式为,相邻地址的最高位的电平输出不足3.3V,大概为2V左右,而较低位的地址输出则是正确的3.3V。 由于只有个别地址输出电平不足,因此猜测还是软件配置问题。
我的FSMC所有配置如下:
1.时钟配置(72MHz)
void RCC_HSE_Configuration(void)
{
        RCC_DeInit();                              //  将外设RCC寄存器重设为缺省值   
        RCC_HSEConfig(RCC_HSE_ON);                 //  设置HSE晶振打开
        if(RCC_WaitForHSEStartUp() == SUCCESS)     //  等待HSE起振,SUCCESS:HSE晶振稳定且就绪
        {
                RCC_HCLKConfig(RCC_SYSCLK_Div1);     //  设置AHB时钟(HCLK)RCC_SYSCLK_DIV1:系统时钟1分频 AHB时钟=系统时钟
                RCC_PCLK2Config(RCC_HCLK_Div1);      //  设置高速AHB时钟APB(PCLK2) // RCC_HCLK_Div1:HCLK1分频,APB2时钟=HCLK
                RCC_PCLK1Config(RCC_HCLK_Div2);      //  设置低速AHB时钟APB1(PCLK1) RCC_HCLK_Div2:HCLK2分频,APB1时钟=HCLK/2
                RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_12);   //  设置PLL时钟源及倍频系数  8/2*12 = 48MHz
                RCC_PLLCmd(ENABLE);                                     //  使能PLL
                while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     //  检查指定的RCC标志位(PLL准备好标志)设置与否
                RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);              //  设置系统时钟(SYSCLK)
                while(RCC_GetSYSCLKSource() != 0x08);                   //  0x08:PLL作为系统时钟
        }
}
void RCC_Configuration(void)
{
//        SystemInit();
        RCC_HSE_Configuration();
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |  
                                                   RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);     //  端口的复用功能使能打开
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);         //  串口1,PC通讯
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);         //  串口2, 预留通讯接口
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);         //  串口3,显示屏通讯
}
2.GPIO配置
// FSMC端口初始化
        /* 数据总线端口IO配置 */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15 | GPIO_Pin_0  | GPIO_Pin_1  |
                                      GPIO_Pin_8  | GPIO_Pin_9  | GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7  | GPIO_Pin_8  | GPIO_Pin_9  | GPIO_Pin_10 |
                                      GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 |
                                      GPIO_Pin_14 | GPIO_Pin_15;
        GPIO_Init(GPIOE, &GPIO_InitStructure);

        /* 地址总线端口IO配置 */         
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
        GPIO_Init(GPIOF, &GPIO_InitStructure);

        /* NOE and NWE IO配置 */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
        GPIO_Init(GPIOD, &GPIO_InitStructure);

        /* NCE4_1  IO配置 */                                                                        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_0;
        GPIO_Init(GPIOG, &GPIO_InitStructure);        
        
        /* NWAIT 信号配置 */               
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
3.FSMC配置
void FSMC_Configuration(void)
{
        FSMC_PCCARDInitTypeDef FSMC_PCCARDInitStructure;
        FSMC_NAND_PCCARDTimingInitTypeDef p;

//  FSMC 时间配置
        p.FSMC_SetupTime = 0x02;
        p.FSMC_WaitSetupTime = 0x04;
        p.FSMC_HoldSetupTime = 0x02;
        p.FSMC_HiZSetupTime = 0x03;

//  FSMC工作参数配置
        FSMC_PCCARDInitStructure.FSMC_Waitfeature = FSMC_Waitfeature_Enable;       //  等待功能使能
        FSMC_PCCARDInitStructure.FSMC_TCLRSetupTime = 0x10;                                               //  CLE(命令锁存使能)到RE的延迟
        FSMC_PCCARDInitStructure.FSMC_TARSetupTime = 0x10;                                                    //  ALE(地址锁存使能)到RE的延迟
        FSMC_PCCARDInitStructure.FSMC_CommonSpaceTimingStruct = &p;                               //  指令空间时间
        FSMC_PCCARDInitStructure.FSMC_AttributeSpaceTimingStruct = &p;                       //  属性空间时间
        FSMC_PCCARDInitStructure.FSMC_IOSpaceTimingStruct = &p;                                       //  IO空间时间           

        FSMC_PCCARDInit(&FSMC_PCCARDInitStructure);                                //  PCCARD Init     函数内部定义为了16为数据宽度
        FSMC_PCCARDCmd(ENABLE);                                                    //  enable PCCARD model         PCR4[2] = 1
}

以上。
但是通讯一直都建立不起来,请有过相关经验的网友给些指导,非常感谢。
沙发
mmuuss586| | 2015-1-9 22:36 | 只看该作者

用普通的FSMC模式就可以了;
可以看看我发的FSMC资料;

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
lhy317409772 + 1 很给力!
板凳
mmuuss586| | 2015-1-9 22:37 | 只看该作者
几年前我还发过STM32F407+PCL6045BL的资料呢;

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
lhy317409772 + 1 很给力!
地板
mmuuss586| | 2015-1-9 22:38 | 只看该作者

6045B,找上海的NPM买的;
还去他们那边看过,有几个日本人在那;
他们地址以前就在浦东,租了一个办公的地方;
大概100平方左右吧;

使用特权

评论回复
5
fanxsd| | 2015-1-9 23:11 | 只看该作者
游总,这个你都清楚啊!

使用特权

评论回复
6
lhy317409772|  楼主 | 2015-1-12 10:27 | 只看该作者
mmuuss586 发表于 2015-1-9 22:36
用普通的FSMC模式就可以了;
可以看看我发的FSMC资料;

是吗!??    普通模式??  兄弟,你发的资料在哪儿? 你的帖子?   我去看看.....

使用特权

评论回复
7
lhy317409772|  楼主 | 2015-1-12 10:29 | 只看该作者
mmuuss586 发表于 2015-1-9 22:37
几年前我还发过STM32F407+PCL6045BL的资料呢;

天啦,我终于找到发PCL6045经验贴的作者了....你造我找了多久吗?   :'(
     我的硬件,我跟日本工程师通过邮件之后,我们已经做了修改,但是读写还是有问题..我感觉是我软件配置问题,但是都困扰了快一个月了,问题都没有进展,希望兄弟分享一下开发经验,十分感谢。  请问是否能加您扣扣???

使用特权

评论回复
8
flyincunt| | 2015-3-19 16:29 | 只看该作者
mmuuss586 发表于 2015-1-9 22:37
几年前我还发过STM32F407+PCL6045BL的资料呢;

我找遍了你发的帖子,都没有找到,能给个链接吗、、、、、?谢谢

使用特权

评论回复
9
mmuuss586| | 2015-3-19 20:17 | 只看该作者
flyincunt 发表于 2015-3-19 16:29
我找遍了你发的帖子,都没有找到,能给个链接吗、、、、、?谢谢

我用的不是PC CARD模式;
SRAM模式,至于PC6045B的资料发过几次,不过不是很全,毕竟公司的项目,总要保留的;
那公司,他们以前上海还有分公司呢;

使用特权

评论回复
10
mmuuss586| | 2015-3-19 20:18 | 只看该作者
flyincunt 发表于 2015-3-19 16:29
我找遍了你发的帖子,都没有找到,能给个链接吗、、、、、?谢谢

https://bbs.21ic.com/icview-732954-1-1.html
这是其中之一资料;

使用特权

评论回复
评论
箜箜 2024-10-23 16:56 回复TA
没找到你的帖子 
箜箜 2024-10-23 16:55 回复TA
有关于STM32F407+PCL6045BL的资料吗 
11
995971182| | 2016-5-26 14:52 | 只看该作者
lhy317409772 发表于 2015-1-12 10:27
是吗!??    普通模式??  兄弟,你发的资料在哪儿? 你的帖子?   我去看看..... ...

我们有跟6045一类芯片的,国产的,有兴趣了解吗?加995971182发资料給您

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝