OpenEdv-开源电子网

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

FSMC高低字节选择通道(NBL)疑问,求大神解答

[复制链接]

30

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
551
金钱
551
注册时间
2017-3-16
在线时间
89 小时
发表于 2017-12-28 19:51:26 | 显示全部楼层 |阅读模式
2金钱
在学习F4074探索板的外部SRAM实验时,对于由于外部外扩的SRAM是16位的,而在程序中的读写函数pBuffer都是8位的,参考了中文参考手册,看了视频,始终也没有搞明白NBL[1]、NBL[0]跟地址位的最低位有什么联系,在中文参考手册中FSMC中章节的的  通用事务规则  中,提到了AHB事务数据宽度和存储器数据宽度不一样时的处理,但是感觉说的很不清楚,在原子给出的视频讲解中,提到了高低字节通道的值(为0或者1)与地址位的最低位有关系,但是查看手册,并没有发现关系是什么,能查到的也仅仅是刚才说的通用事务规则。
       在FSMC初始化时,已将外部存储的位数设为16位,即HADDR[25:1]-> FSMC_A[24:0]
1、有没有人给屡一下这个读写的过程是什么,NBL[1]、NBL[0]是受什么控制的?
2、如果pBuffer也是16位的,那读写函数应该怎么更改,直接将那个地址加2吗?
通用事务.png
读函数.png
写函数.png

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c++,true]*(volatile uint8_t *)xx0 = 1; // FSMC_NBL0 *(volatile uint8_t *)xx1 = 1; // FSMC_NBL1 *(volatile uint16_t *)xx0 = 1; // FSMC_NBL0 & FSMC_NBL1 [/mw_shl_code]
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3718
金钱
3718
注册时间
2011-5-23
在线时间
2012 小时
发表于 2017-12-28 19:51:27 | 显示全部楼层
[mw_shl_code=c++,true]*(volatile uint8_t *)xx0  = 1;  // FSMC_NBL0
*(volatile uint8_t *)xx1  = 1;  // FSMC_NBL1
*(volatile uint16_t *)xx0 = 1; // FSMC_NBL0 & FSMC_NBL1
[/mw_shl_code]
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

30

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
551
金钱
551
注册时间
2017-3-16
在线时间
89 小时
 楼主| 发表于 2017-12-28 20:51:29 | 显示全部楼层
走过路过。。。留下建议啊
回复

使用道具 举报

30

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
551
金钱
551
注册时间
2017-3-16
在线时间
89 小时
 楼主| 发表于 2017-12-28 22:14:03 | 显示全部楼层
有人知道吗?帮忙分析一下
回复

使用道具 举报

30

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
551
金钱
551
注册时间
2017-3-16
在线时间
89 小时
 楼主| 发表于 2017-12-28 22:25:51 | 显示全部楼层
在本论坛搜了关于这方面的帖子,下面的回答也没有很清楚的,希望专业人士指点一下
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-12-29 00:19:57 | 显示全部楼层
你应该去看看IS62WV51216的时序图!!
回复

使用道具 举报

30

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
551
金钱
551
注册时间
2017-3-16
在线时间
89 小时
 楼主| 发表于 2017-12-29 10:00:43 | 显示全部楼层
正点原子 发表于 2017-12-29 00:19
你应该去看看IS62WV51216的时序图!!

看过IS62WV51216的手册,里面介绍的UB,LB,但是他们是连接到了FSMC的FSMC_NBL1和FSMC_NBL0上,UB,LB是接收来自外部的信号,我也知道UB为低电平是对16位的高8位进行操作,LB为低电平时,是对16位的低8位进行操作,可是我想问的是,FSMC的工作机制,FSMC_NBL1,FSMC_NBL0是受什么控制输出高低电平给UB,LB的,不好意思,基础较差,望原子哥多包涵,还是请百忙之中抽空提点一下
回复

使用道具 举报

30

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
551
金钱
551
注册时间
2017-3-16
在线时间
89 小时
 楼主| 发表于 2017-12-29 13:36:02 | 显示全部楼层
aozima 发表于 2017-12-29 10:19
[mw_shl_code=c++,true]*(volatile uint8_t *)xx0  = 1;  // FSMC_NBL0
*(volatile uint8_t *)xx1  = 1;   ...

这是哪里的操作,F4中没有见到啊。可以简单说下吗
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3718
金钱
3718
注册时间
2011-5-23
在线时间
2012 小时
发表于 2017-12-29 14:28:20 | 显示全部楼层
这种总见过的吧
[mw_shl_code=cpp,true]
struct obj
{
        uint8_t a;
        uint8_t b;
        uint16_t c;
        uint32_t d;
};

struct obj obj_test;

obj_test.a  = 1;  // FSMC_NBL0
obj_test.b  = 1;  // FSMC_NBL1
obj_test.c = 1; // FSMC_NBL0 & FSMC_NBL1
obj_test.d = 1; // (FSMC_NBL0 & FSMC_NBL1) *2
[/mw_shl_code]
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-12-30 01:37:14 | 显示全部楼层
bh1023058880 发表于 2017-12-29 10:00
看过IS62WV51216的手册,里面介绍的UB,LB,但是他们是连接到了FSMC的FSMC_NBL1和FSMC_NBL0上,UB,LB是接收 ...

FSMC,硬件机制,你把它看成一个外设就行了。
至于具体过程,是硬件自动实现的,在程序上,无法给你做解释。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
414
金钱
414
注册时间
2014-11-22
在线时间
92 小时
发表于 2017-12-30 01:43:48 | 显示全部楼层
1.SRAM.png
尽自己的能力,把事情做到最好
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 19:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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