打印
[STM32F4]

fsmc总线问题

[复制链接]
1813|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wf237574800|  楼主 | 2018-3-21 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问FSMC总线下挂两个设备分别是LCD和NORFLASH,是只需要开机的时候分别初始化一次FSMC总线就可以了还是每次操作LCD或者NORFLASH时候按照各自设备初始化一次?
如果是只需要开机初始化一次,那操作LCD和NORFLASH时怎么保证都是按照各自的时序呢?
如果是每个外设的任何读写操作前都需要初始化一次总线,那不是太浪费时间 ?
沙发
wf237574800|  楼主 | 2018-3-21 09:59 | 只看该作者
我现在自己试验的情况是开机都初始化一次就可以了  ,但是不理解后面分别操作LCD和NORFLASH的时候是怎么保证总线都是自己需要的时序的。

使用特权

评论回复
板凳
xyz549040622| | 2018-3-21 10:46 | 只看该作者
这是以前香水城版主的回复,复制给你参考看看
###
使用的是F103VET6,100引脚。从bank1(NOR/PSRAM)控制器上只有一个region的片选信号引出(NE1)。那么也只有一组配置和时序控制寄存器可用:
FSMC_BCR1 配置寄存器
FSMC_BTR1 时序寄存器
FSMC_BWTR1 扩展时序寄存器

如果通过其他空余地址线和译码器扩展出两个地址,读写的时候地址线不同,数据访问的设备也不同,但是需要注意这两个设备的属性配置和时序配置。因为只有一组寄存器可用。如果两个设备的属性兼容,时序上配置一个符合双方要求的即可,这样不用每次访问某个设备前,再重新改配置,但是数据线上的速度就会响应降低了。

使用特权

评论回复
地板
wf237574800|  楼主 | 2018-3-22 13:37 | 只看该作者
xyz549040622 发表于 2018-3-21 10:46
这是以前香水城版主的回复,复制给你参考看看
###
使用的是F103VET6,100引脚。从bank1(NOR/PSRAM)控制器 ...

首先感谢版主的热心解答 ,但是有两点不太清楚:
1,如你所说,两个是相同属性的设备对于时序或其他要求都差不多的只是扩展地址来实现的这种是不需要每次都去初始化的,这句话我认为应该没毛病。但是后面一句“相应速度也会降低”是怎么得出的?哪方面原因影响到速度了?还请版主帮忙解答下 ,谢谢
2,我觉得现实中应该很多人都会在FSMC总线下挂载多种不同类型的设备,比如LCD,NORFLASH,SRAM,等等,这三种明显是不同类型的,其中NORFALSH和LCD还算有共同点 ,但是SRAM完全就不同了 ,不知如果这两种设备同时使用是不是必须要每次读写前都要初始化配置?

使用特权

评论回复
5
wf237574800|  楼主 | 2018-3-22 16:13 | 只看该作者
@香水城 请求香水城版主支援解答,感激不尽。。

使用特权

评论回复
6
香水城| | 2018-3-22 18:51 | 只看该作者
各自初始化一次就好;
不同的设备对应不同的片选和地址,互不干扰。

使用特权

评论回复
7
734774645| | 2018-3-22 22:48 | 只看该作者
楼主不放心可以用哪个适合初始化哪个,这种也是经常用的,而且更稳妥。

使用特权

评论回复
8
734774645| | 2018-3-22 22:48 | 只看该作者
用哪个时候初始化哪个,也是可以的,不信你是试试,我经常这么干。

使用特权

评论回复
评论
wf237574800 2018-3-23 11:20 回复TA
我知道这么做当然是可以的 ,但是这么做我不太喜欢,感觉很多余 ,可是不这么做我又不知道为何不同时序的可以只初始化一次就能用 
9
wf237574800|  楼主 | 2018-3-23 11:13 | 只看该作者
本帖最后由 wf237574800 于 2018-3-23 11:18 编辑
香水城 发表于 2018-3-22 18:51
各自初始化一次就好;
不同的设备对应不同的片选和地址,互不干扰。

我知道不同设备对应不同片选和地址 ,操作不同的设备时候对应的地址线发出相应的地址以及数据线发出相应的数据,但是这些地址和数据以及其他控制读写使能等等的信号对于不同的设备而言应该是由时序上的区别的吧?比如总线上挂载一个NORFALSH和一个SRAM,操作SRAM当然会以SRAM的地址发送,也是以SRAM的初始化配置的时序要求发送的数据,然后紧接着我又操作NORFLASH,这个时候虽然我发出的数据和地址对象都是NORFLASH,但是此时可能这些数据地址控制等信号也都是以SRAM的时序去发送的 。难道这些对于NORFLASH都是无关紧要的?如果是无关紧要的那我开始的时候又何必对应每个设备都初始化一次呢,直接统一按照一个设备来初始化一次就好了 ,实际上我试了按照一个设备来初始化是不行的额 。当然如果我以上的所有担忧都是多余的,版主您说的是对的,只是依据地址和片选来对应设备就可以的话,我还是无法理解这是为何,麻烦版主看在小弟学而不厌的态度上帮忙详细解答。谢过。

使用特权

评论回复
10
Richardd| | 2018-3-23 18:32 | 只看该作者
需要各自初始化

使用特权

评论回复
11
TYZZD| | 2018-4-9 16:31 | 只看该作者
wf237574800 发表于 2018-3-23 11:13
我知道不同设备对应不同片选和地址 ,操作不同的设备时候对应的地址线发出相应的地址以及数据线发出相应的 ...

版主应该说的是144脚的,NE1~4分别有自己的控制寄存器和时序寄存器,选择不同的外设(片选信号)时自动调用自己的控制寄存器和时序寄存器的内容来生成信号。
我现在用100脚的,只有NE1一个片选,想外挂RA8875和DM9000A,不知道该怎么操作。

使用特权

评论回复
12
TYZZD| | 2018-4-9 16:33 | 只看该作者
香水城 发表于 2018-3-22 18:51
各自初始化一次就好;
不同的设备对应不同的片选和地址,互不干扰。

版主我现在用100脚的(STM32F103VET6),只有NE1一个片选,想外挂RA8875和DM9000A,不知道该怎么操作。

使用特权

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

本版积分规则

13

主题

78

帖子

3

粉丝