4154|7

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

FSMC的问题 [复制链接]



我在提供例子里:
void FSMC_SRAM_WriteBuffer(u16* pBuffer, u32 WriteAddr, u32 NumHalfwordToWrite)
{
  for(; NumHalfwordToWrite != 0; NumHalfwordToWrite--) /* while there is data to write */
  {
    /* Transfer data to the memory */
    *(u16 *) (Bank1_SRAM3_ADDR + WriteAddr) = *pBuffer++;
   
    /* Increment the address*/  
    WriteAddr += 2;
  }   
}


void FSMC_SRAM_ReadBuffer(u16* pBuffer, u32 ReadAddr, u32 NumHalfwordToRead)
{
  for(; NumHalfwordToRead != 0; NumHalfwordToRead--) /* while there is data to read */
  {
    /* Read a half-word from the memory */
    *pBuffer++ = *(vu16*) (Bank1_SRAM3_ADDR + ReadAddr);
    /* Increment the address*/  
    ReadAddr += 2;
  }  
}

都是操作的16位数据,用的SARM是16位的。
如果我还用SARM的16位宽度的器件,我能操作的8位数据吗?
把函数改成以下,能操作吗?

void FSMC_SRAM_WriteBuffer(u8* pBuffer, u32 WriteAddr, u32 NumHalfwordToWrite)
{
  for(; NumHalfwordToWrite != 0; NumHalfwordToWrite--) /* while there is data to write */
  {
    /* Transfer data to the memory */
    *(u8 *) (Bank1_SRAM3_ADDR + WriteAddr) = *pBuffer++;
   
    /* Increment the address*/  
    WriteAddr ++;
  }   
}

void FSMC_SRAM_ReadBuffer(u8* pBuffer, u32 ReadAddr, u32 NumHalfwordToRead)
{
  for(; NumHalfwordToRead != 0; NumHalfwordToRead--) /* while there is data to read */
  {
    /* Read a half-word from the memory */
    *pBuffer++ = *(u8*) (Bank1_SRAM3_ADDR + ReadAddr);
    /* Increment the address*/  
    ReadAddr ++;
  }  
}
此帖出自stm32/stm8论坛

最新回复

                                 回5楼:这个帖子回答了你的问题:请教版主,关于FSMC的时序计算。  详情 回复 发表于 2010-5-4 21:19
点赞 关注
 

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
呵呵
现在没有现成的硬件

我考虑是用16位器件,还是用8位器件
此帖出自stm32/stm8论坛
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 可以操作8位数据。
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 呵呵
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
关于时序参数计算,我有点搞不懂?
ADDSET:地址建立时间
ADDHOLD:地址保持时间
DATAST:数据建立时间
ACCMOD:访问模式

建立时间:
((ADDSET + 1) + (DATAST + 1)) × HCLK = max (tWC, tRC)
DATAST × HCLK = tPWE1
DATAST必须满足:
DATAST = (tAA + tsu(Data_NE) + tv(A_NE))/HCLK – ADDSET – 4

tWC   12ns    写周期时间
tRC   读周期时间   12ns
tPWE1   写使能低脉冲宽度  8ns
tAA        地址有效时间   12ns

HCLK   内部AHB时钟频率  72  MHz

tsu(Data_NE) + tv(A_NE)数据至FSMC_NEx高的建立时间 + FSMC_NEx低至FSMC_A有效     36ns


这是一篇文档给的数据

计算出的结果:

使用上述公式、存储器的时序(表4)和STM32F10xxx的参数(表2),可以得到:

地址建立时间:0x0

地址保持时间:0x0

数据建立时间:0x2

我怎么带上边的公式:HCLK 只能等于8才能对。可给的参数是72M,就是1.39ns也是不对的
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 请问这个是怎么算的。实在搞不明白
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 我也很想弄明白,知道的高手说明下
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
回5楼:这个帖子回答了你的问题:请教版主,关于FSMC的时序计算
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表