电路设计,软件开发,专业项目团队承接电子产品开发!


ISPRO下载型编程器
火爆销售中

RS232/TTL转换器
全IC串口窃电

RS232/TTL转换线
全IC串口窃电

ByteBlasterMV Cable
CPLD/FPGA并口下载线

ByteBlaster II Cable ISPRO下载型编程器
支持S51/AVR/PIC
超级51开发板套件
前卫实用超值

PC/MCU/CPLD
三合一学习套件

全新万年历方案
AVR单片机开发板
 

Min51单片机仿真机
迷你型

ARM7开发板
仅售260元!
 

RS-232/RS-485双向接口电平转换器  

51单片机升级STM32
火爆销售中
MPLAB-ICD2
火爆销售中
LED51开发板
玩具又名图文显示棒

面板模块/开发板
经济危机明智决择

       

GSM MODEM GSM猫

SMS短信模块 工业级/全自动
火爆销售中

大功率数传电台

高速数传电台

您当前位置:电子技术资料 -> STM32 -> STM32 FSMC ->

祝您阅读愉快!

fsmc地址数据复用NADV信号无变化


类别:技术文章
来源:未知
作者:未知
关键字:fsmc
加入日期:2013-1-9

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);

把MemoryType改为NOR,如下:
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
此时NADV信号正常,低16位地址输出正常。
--------------------
为什么FSMC_MemoryType_SRAM不行呢?我的外设是SRAM。
如果选择SRAM表示你使用的是非总线复用模式,片选应该是NEx
非总线复用模式没有NADV信号,请参考STM32技术参考手册(第5版)的364页中的表70。

目前的现象是memorytype设置为SRAM时复用模式不正常,memorytype设置为NOR后复用模式正常。此时读写外部SRAM全部正常。
从字面上看memorytype为NOR应该是针对NORFLASH,memorytype为SRAM是针对SRAM。我的理解是复用模式应该是在NOR和SRAM类型下都可以的,但实际不是。

FSMC设置为地址/数据总线复用模式时应使用NOR类型
请看STM32技术参考手册(第5版)的384页表88,这是复用模式下寄存器的设置,它要求存储器类型MTYP只能是NOR。

请看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)
------------------------
100pin的STM32F101VC的FSMC接口实际输出的地址线A23-A0是理论值的右移1位。例如我要求写端口0x60ff0010,实际驱动输出的地址线是0x607f8008。是否是FSMC端口16bit宽度的原因?

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




您可能还会关注的相关技术资料:

中国电子网
www.EC66.com
QQ:34740080 EMAIL:iloveaoe@163.com
最佳浏览:1024*768
Copyright (C) 2001-2010 EC66.COM All Rights Reserved
Aoe/帝国 制作维护
粤ICP备11071661号