-
了解下
-
学习一下
-
其他两款价格是优势啊,对于个人来说,还是价格优先。对于公司来说还是性能优先的
-
福禄克万用表量程.自动量程,无需手动切换,表笔做工好。使用5号电池,更换方便,使用4层板,抗干扰能力更好
使用陶瓷保险丝。可以测量大1000u的大电容,不错,就是价格贵了点。好东西。
-
main()
{
IIC_test();
SRAM_test();//FSMC
PCL_Test();//FSMC
}这样会死掉,
但是这样:
main()
{
printf("\nI2C Read-Write test: \n");
if(I2C_FRAM_BufferWrite(u8Test_data,Start_addr_Test,Test_buflen)==TRUE)
printf(" I2C Write OK: \n");
else
printf(" I2C Write EEROR: \n");
if(I2C_FRAM_BufferRead(u8readdata,Start_addr_Test,Test_buflen)==TRUE)
{
for(j=0;j
-
AD5422时序图 :使用
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
void SPI_Master_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// DMA_InitTypeDef DMA_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
/* Peripheral Clock Enable -------------------------------------------------*/
/* Enable the SPI clock */
SPI_Master1_CLK_INIT(SPI_Master1_CLK, ENABLE);
/* Enable GPIO clocks */
RCC_AHB1PeriphClockCmd(SPI_Master1_SCK_GPIO_CLK | SPI_Master1_MISO_GPIO_CLK | SPI_Master1_MOSI_GPIO_CLK, ENABLE);
// /* Enable DMA clock */
// RCC_AHB1PeriphClockCmd(SPI_Master1_DMA_CLK, ENABLE);
/* SPI GPIO Configuration --------------------------------------------------*/
/* GPIO Deinitialisation */
GPIO_DeInit(SPI_Master1_SCK_GPIO_PORT);
GPIO_DeInit(SPI_Master1_MISO_GPIO_PORT);
GPIO_DeInit(SPI_Master1_MOSI_GPIO_PORT);
/* Connect SPI pins to AF5 */
GPIO_PinAFConfig(SPI_Master1_SCK_GPIO_PORT, SPI_Master1_SCK_SOURCE, SPI_Master1_SCK_AF);
GPIO_PinAFConfig(SPI_Master1_MISO_GPIO_PORT, SPI_Master1_MISO_SOURCE, SPI_Master1_MISO_AF);
GPIO_PinAFConfig(SPI_Master1_MOSI_GPIO_PORT, SPI_Master1_MOSI_SOURCE, SPI_Master1_MOSI_AF);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
/* SPI SCK pin configuration */
GPIO_InitStructure.GPIO_Pin = SPI_Master1_SCK_PIN;
GPIO_Init(SPI_Master1_SCK_GPIO_PORT, &GPIO_InitStructure);
/* SPI MISO pin configuration */
GPIO_InitStructure.GPIO_Pin = SPI_Master1_MISO_PIN;
GPIO_Init(SPI_Master1_MISO_GPIO_PORT, &GPIO_InitStructure);
/* SPI MOSI pin configuration */
GPIO_InitStructure.GPIO_Pin = SPI_Master1_MOSI_PIN;
GPIO_Init(SPI_Master1_MOSI_GPIO_PORT, &GPIO_InitStructure);
/* SPI configuration -------------------------------------------------------*/
SPI_I2S_DeInit(SPI_Master1);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI_Master1, &SPI_InitStructure);
SPI_Cmd(SPI_Master1, ENABLE);
}
-
NAND512W3A2CN6E ID = 20,76,20,76 ,后面2个字节对不?前面2个对的
-
SDRAM工作没问题。NAND就差NCEpin初始化,应该也没问题的
-
接线图:
-
串口打印:SDRAM_16_write:eeff , SDRAM_16_read:eeff
NAND FLASH Status:0
Nand Flash ID = 20,76,20,76
-
void FSMC_NAND_ReadID(NAND_IDTypeDef* NAND_ID)
{
u32 data = 0;
/*!< Send Command to the command area */
*(vu8 *)(Bank_NAND_ADDR | CMD_AREA) = 0x90;
*(vu8 *)(Bank_NAND_ADDR | ADDR_AREA) = 0x00;
/*!< Sequence to read ID from NAND flash */
data = *(vu32 *)(Bank_NAND_ADDR | DATA_AREA);
NAND_ID->Maker_ID = ADDR_1st_CYCLE (data);//四个周期读取四个ID
NAND_ID->Device_ID = ADDR_2nd_CYCLE (data);
NAND_ID->Third_ID = ADDR_3rd_CYCLE (data);
NAND_ID->Fourth_ID = ADDR_4th_CYCLE (data);
}
-
/* NAND Area definition Board RevD */
#define CMD_AREA (u32)(1
-
u32 FSMC_NAND_ReadStatus(void)
{
u32 data = 0x00, status = NAND_BUSY;
/* Read status operation ------------------------------------ */
*(vu8 *)(Bank_NAND_ADDR | CMD_AREA) = NAND_CMD_STATUS;
data = *(vu8 *)(Bank_NAND_ADDR);
if((data & NAND_ERROR) == NAND_ERROR)//SR0
{
status = NAND_ERROR;
}
else if((data & NAND_READY) == NAND_READY)//SR6
{
status = NAND_READY;
}
else
{
status = NAND_BUSY;
}
return (status);
}
-
NAND_FLASH_Time.FSMC_SetupTime = 1; //建立时间
NAND_FLASH_Time.FSMC_HoldSetupTime = 3; //保持时间
NAND_FLASH_Time.FSMC_WaitSetupTime = 2; //等待时间
NAND_FLASH_Time.FSMC_HiZSetupTime = 1; //高阻建立时间
NAND_FLASHStru.FSMC_Bank = FSMC_Bank2_NAND; //使用FSMC BANK2
NAND_FLASHStru.FSMC_Waitfeature = FSMC_Waitfeature_Enable; //使能FSMC的等待功能
NAND_FLASHStru.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b; //NAND Flash 8bit
NAND_FLASHStru.FSMC_ECC = FSMC_ECC_Enable; //使能ECC特性
NAND_FLASHStru.FSMC_ECCPageSize = FSMC_ECCPageSize_512Bytes; //ECC页大小
NAND_FLASHStru.FSMC_TCLRSetupTime = 0;
NAND_FLASHStru.FSMC_TARSetupTime = 0;
NAND_FLASHStru.FSMC_AttributeSpaceTimingStruct = &NAND_FLASH_Time;
NAND_FLASHStru.FSMC_CommonSpaceTimingStruct = &NAND_FLASH_Time;
FSMC_NANDInit(&NAND_FLASHStru);
/*!使能FSMC BANK2 */
FSMC_NANDCmd(FSMC_Bank2_NAND, ENABLE);
-
好东西
-
好东西
-
好东西
-
好东西,学习
-
谢谢分享
-
谢谢分享