8894|19

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

测试STM32F101VC中,fsmc地址/数据复用问题 [复制链接]

请教各位同学:
uart5初始化代码如下:
    // Enable USART2, USART3, USART4, USART5 clocks
    RCC_APB1PeriphClockCmd (RCC_APB1Periph_USART2 |
                    RCC_APB1Periph_USART3 |
            RCC_APB1Periph_UART4 |                         RCC_APB1Periph_UART5,
            ENABLE);

// Configure UART5 Tx (PC.12) as alternate function push-pull
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init (GPIOC, &GPIO_InitStructure);
        // Configure UART5 Rx (PD.02) as input floating
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init (GPIOD, &GPIO_InitStructure);
        // Configure UART5 mode
        USART_Init (UART5, &USART_InitStructure);
        USART_ClockInit (UART5, &USART_ClockInitStruct);
        // Enable the UART5
        USART_Cmd (UART5, ENABLE);

目前在uart5串口上输出数据不正确,即输出后测量pin80没有波形。
usart1~usart3和uart4测试正常,初始化代码是类似的。

另,STM32f101VC的低16位地址是和数据线复用的,目前读写控制线波形正常,高8位地址输出正常,但NADV信号一直维持高电平不变,是否下面的代码有错:
 // Enable DMA and FSMC clocks
 RCC_AHBPeriphClockCmd (RCC_AHBPeriph_DMA1 | 
                        RCC_AHBPeriph_DMA2 |           
                        RCC_AHBPeriph_FSMC, 
                        ENABLE);

    // NADV configuration
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;        // NADV
    GPIO_Init (GPIOB, &GPIO_InitStructure);

    //-- FSMC 时序配置 ------------------------------------------------------
    FSMC_ReadWriteTimingStruct.FSMC_AddressSetupTime = 15;
    FSMC_ReadWriteTimingStruct.FSMC_AddressHoldTime = 15;
    FSMC_ReadWriteTimingStruct.FSMC_DataSetupTime = 15;
    FSMC_ReadWriteTimingStruct.FSMC_BusTurnAroundDuration = 15;
    FSMC_ReadWriteTimingStruct.FSMC_CLKDivision = 15;
    FSMC_ReadWriteTimingStruct.FSMC_DataLatency = 15;
    FSMC_ReadWriteTimingStruct.FSMC_AccessMode = FSMC_AccessMode_B;

    FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
    FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Enable;
    FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
    FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
    FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
    FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
    FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
    FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
    FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &FSMC_ReadWriteTimingStruct;
    FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &FSMC_ReadWriteTimingStruct;

    FSMC_NORSRAMInit (&FSMC_NORSRAMInitStructure); 

    // Enable FSMC Bank1_SRAM Bank
    FSMC_NORSRAMCmd (FSMC_Bank1_NORSRAM1, ENABLE);  


此帖出自stm32/stm8论坛

最新回复

                                 FSMC只有16bit的数据总线..比如RAM不够用..我要外扩SRAM的话..那么我有一部分变量的访问不是很慢了吗..32位的数据话应该要寻址2次才能ok吧.. 9261就有d0-d31..可以接2片..组成32bit..最近在评估STM32.主要在FSMc这块..   详情 回复 发表于 2008-9-28 23:14
点赞 关注
 

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

关注

                                  
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

谢谢 ST_ARM ,uart5我稍后测试。

FSMC问题答复:
我把MemoryType改为NOR,如下:
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;

此时NADV信号正常,低16位地址输出正常。
为什么FSMC_MemoryType_SRAM不行呢?我的外设是SRAM。

另外发现问题:100pin的STM32F101VC的FSMC接口实际输出的地址线A23-A0是理论值的右移1位。例如我要求写端口0x60ff0010,实际驱动输出的地址线是0x607f8008。是否是FSMC端口16bit宽度的原因?

请问各位同学有无出现这个现象?

此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 

抱歉:)

uart5正常,程序没有问题,tx输出外挂的MAX202坏了,把输出信号挂死了,一直是‘1’电平,tx只能在‘1’上面驱动出一些小毛刺,
所以一开始没注意,惭愧
此帖出自stm32/stm8论坛
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

5
 

FSMC端口宽度可以设置的

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 

香主,

 FSMC端口宽度是可以设置的,
我想了解的是FSMC的地址线为何与程序中设定相差1bit
此帖出自stm32/stm8论坛
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

7
 

因为你把FSMC端口宽度设置为16

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

96

帖子

0

TA的资源

一粒金砂(中级)

8
 

多谢两位版主

                                 FSMC memory_type设置为SRAM时无法驱动出NADV问题,还请两位版主确认一下,是ST设计就是如此,还是其它问题。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 

如果选择SRAM表示你使用的是非总线复用模式,片选应该是NEx

非总线复用模式没有NADV信号,请参考STM32技术参考手册(第5版)的364页中的表70。

请仔细描述你使用的是什么存储器,是否使用STM32的地址/数据总线复用模式。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 

香主,

我使用的是16bit宽的SRAM,FSMC已经设置为地址/数据总线复用模式。

目前的现象是memorytype设置为SRAM时复用模式不正常,memorytype设置为NOR后复用模式正常。此时读写外部SRAM全部正常。

从字面上看memorytype为NOR应该是针对NORFLASH,memorytype为SRAM是针对SRAM。我的理解是复用模式应该是在NOR和SRAM类型下都可以的,但实际不是。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 

请把FSMC初始化部分的程序贴出来,还有你的线路图

                                 否则很难搞清楚你的配置,也就无法讨论。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 

1楼有FSMC的初始化代码

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

13
 

我来回答你地址移位的问题

配置成16位宽度后,FSMC内部的地址作了处理,使得逻辑上的A1输出到外部引脚A0;逻辑上的A2输出到外部引脚的A1,以此类推。而逻辑上的A0根本就不出现了。因为既然配置成16位宽度,所以A0都是0,不变咯。ST的stm32,str9都是这样的。

另外建议楼主修改你帖子的题目,现在已经严重偏题了。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

14
 

to lut1lut

修改题目了
thanks
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

1

TA的资源

一粒金砂(初级)

15
 

回11楼:FSMC设置为地址/数据总线复用模式时应使用NOR类型

                                 请看STM32技术参考手册(第5版)的384页表88,这是复用模式下寄存器的设置,它要求存储器类型MTYP只能是NOR。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

16
 

100pin的还是可以接sram,

                                 但是类型要配置成NOR了?
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 

是的

                                 目前我的测试是这样的
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

18
 

FSMC 地址和数据复用

请看STM32技术参考手册(第5版)的392页最下面

Bit 1 MUXEN: Address/data multiplexing enable bit.
   When this bit is set, the address and data values are multiplexed on the databus, valid only with NOR Flash memory:
   0: Address/Data nonmultiplexed
   1: Address/Data multiplexed on databus (default after reset)
此帖出自stm32/stm8论坛
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(初级)

19
 

哈哈!

这FSMC还没接触,但感觉就与ARM9接 NOR FLASH,SDRAM,外设等差不多的。
争取玩玩。

这个FSMC再加SDRAM信号就VERY GOOD了!
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

20
 

re

FSMC只有16bit的数据总线..

比如RAM不够用..我要外扩SRAM的话..那么我有一部分变量的访问不是很慢了吗..
32位的数据话应该要寻址2次才能ok吧.. 
9261就有d0-d31..可以接2片..组成32bit..

最近在评估STM32.主要在FSMc这块..
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表