OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6837|回复: 3

stm32 通过fsmc bank1的ne1 ,接收数据不稳定

[复制链接]

17

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2013-3-20
在线时间
0 小时
发表于 2014-5-23 10:50:17 | 显示全部楼层 |阅读模式
5金钱
   stm32和fpga总线方式通信,此前用原子哥的sram访问区域NE3就是可以的,后来使用ne1,发现fpga接收的数据不稳定,有时候对,有时候错,百思不得解,求各位帮助分析一下,多谢!
   其中,ne1设置模式 同ne3类似,就是把ne1 区域基地址配置 #define Bank1_fpga3_ADDR    ((u32)(0x68000000)),然后依次修改下面(修改的地方已经红色标出):

//初始化外部SRAM CE1
void FSMC_fpga_Init(void)
{          
 RCC->AHBENR|=1<<8;       //使能FSMC时钟  
 RCC->APB2ENR|=1<<5;      //使能PORTD时钟
 RCC->APB2ENR|=1<<6;      //使能PORTE时钟
  RCC->APB2ENR|=1<<7;      //使能PORTF时钟
 RCC->APB2ENR|=1<<8;      //使能PORTG时钟   

 //PORTD复用推挽输出  
 GPIOD->CRH&=0X00000000;
 GPIOD->CRH|=0XBBBBBBBB;
 GPIOD->CRL&=0X0F00FF00;
 GPIOD->CRL|= 0XBBB00BB;     //ne1 配置
 //PORTE复用推挽输出  
 GPIOE->CRH&=0X00000000;
 GPIOE->CRH|=0XBBBBBBBB;
 GPIOE->CRL&=0XFFFFFF00;
 GPIOE->CRL|=0X000000BB;
 /*之前是  
 //GPIOE->CRL&=0X0FFFFF00;
 //GPIOE->CRL|=0XB00000BB;        去除了FSMC_NBL0和FSMC_NBL1的功能 2014-0402              */ 
 //PORTF复用推挽输出
 GPIOF->CRH&=0X0000FFFF;
 GPIOF->CRH|=0XBBBB0000;                    
 GPIOF->CRL&=0XFF000000;
 GPIOF->CRL|=0X00BBBBBB;

 //PORTG复用推挽输出 PG10->NE3                  
 //GPIOG->CRH&=0XFFFFF0FF;
 //GPIOG->CRH|=0X00000B00; 

  GPIOG->CRL&=0XFF000000;
 GPIOG->CRL|=0X00BBBBBB;         
 
 //寄存器清零
 //bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。
 //这里我们使用NE1 ,也就对应BTCR[0],[1]。     ly 4--->0   5---------->1      
 FSMC_Bank1->BTCR[0]=0X00000000;
 FSMC_Bank1->BTCR[1]=0X00000000;
 FSMC_Bank1E->BWTR[0]=0X00000000;
 //操作BCR寄存器 使用异步模式,模式A(读写共用一个时序寄存器)
 //BTCR[偶数]:BCR寄存器;BTCR[奇数]:BTR寄存器
 FSMC_Bank1->BTCR[0]|=1<<12;//存储器写使能
 FSMC_Bank1->BTCR[0]|=1<<4; //存储器数据宽度为16bit     
 //操作BTR寄存器           
 FSMC_Bank1->BTCR[1]|=3<<8; //数据保持时间(DATAST)为3个HCLK 4/72M=55ns(对EM的SRAM芯片)   
 FSMC_Bank1->BTCR[1]|=0<<4; //地址保持时间(ADDHLD)未用到    
 FSMC_Bank1->BTCR[1]|=0<<0; //地址建立时间(ADDSET)为2个HCLK 1/36M=27ns   
 //闪存写时序寄存器 
 FSMC_Bank1E->BWTR[0]=0x0FFFFFFF;//默认值
 //使能BANK1区域1
 FSMC_Bank1->BTCR[0]|=1<<0;             
}  

求指导,还有哪里需要设置吗?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-23 23:10:54 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2013-3-20
在线时间
0 小时
 楼主| 发表于 2014-5-24 22:06:01 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥你好,可是使用ne3的时候,程序通信正常,换了ne1之后,fpga接收的数据不稳定,不知道为啥?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-24 22:54:13 | 显示全部楼层
回复【3楼】summer:
---------------------------------
这不太清楚哦,你测量下wr,rd波形吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-7 17:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表