STM32F429ZGT6使用SDRAM

知识点:标准的SDRAM一般都是4个BANK,stm32f429-diso开发板使用的是IS42S16400J这个芯片。
IS42S16400J也有4个Bank,总容量为1Mbitx 16-bit x 4-bank = 67,108,864 bits = 64-Mbit ,每个BANK的组成
4096rows x 256 columns x 16 bits(=16Mbit), 对应的外部引线是12行8列,请参看datasheet.

相关语句

/* FMC SDRAM control configuration */
  FMC_SDRAMInitStructure.FMC_Bank = FMC_Bank2_SDRAM;
  /* Row addressing: [7:0] */
  FMC_SDRAMInitStructure.FMC_ColumnBitsNumber = FMC_ColumnBits_Number_8b;
  /* Column addressing: [11:0] */
  FMC_SDRAMInitStructure.FMC_RowBitsNumber = FMC_RowBits_Number_12b;


IS42S16160b,256Mbit

相关语句,注意红色改动部分

/* FMC SDRAM control configuration */
  FMC_SDRAMInitStructure.FMC_Bank = FMC_Bank2_SDRAM;
  /* Row addressing: [7:0] */
  FMC_SDRAMInitStructure.FMC_ColumnBitsNumber = FMC_ColumnBits_Number_9b;
  /* Column addressing: [11:0] */
  FMC_SDRAMInitStructure.FMC_RowBitsNumber = FMC_RowBits_Number_13b;



STM32F429I-DISCORVERY  使用的SDRAM是IS42S16400J,64Mbit,在官方例程中的定义是

#define IS42S16400J_SIZE     0x400000   // 4M x 16Bit(存储宽度)=16Mbit(每个Bank的容量)


STM32F429ZGT6开发板使用的SDRAM是IS42S16160b,256Mbit,在上述定义中要修改成

#define IS42S16400J_SIZE_16b     0x1000000   // 16M x 16Bit(存储宽度)=64Mbit(每个Bank的容量)


注意上面2个地址范围是16bit用的,如果只使用一个字节8bit,可将定义的值加倍,即

#define IS42S16400J_SIZE_8b     0x2000000   // 32M x 8Bit(存储宽度)


SDRAM_BANK_ADDR地址0xD0000000;  counter 在0x00--- IS42S16400J_SIZE-1  之间 

读写8bit方法

 *(__IO uint8_t*) (SDRAM_BANK_ADDR + counter) = (uint8_t)0xAB;

ubReaddata_8b = *(__IO uint8_t*)(SDRAM_BANK_ADDR + counter);


读写16bit方法

 *(__IO uint16_t*) (SDRAM_BANK_ADDR +2* counter) = (uint16_t)0xABCD;

ubReaddata_16b = *(__IO uint16_t*)(SDRAM_BANK_ADDR +2* counter);

注意这里要乘2,地址0x00存低8位,0x01存高8位,以此类推


相关程序下载

http://download.csdn.net/detail/silno/8178449





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值