哦!你的意思是第二种是用了SPI接口来控制的?那它怎么控制flash的7个引脚。flash.c的宏定义如下,麻烦你帮我解释下!多谢!<br /><br /><br />#ifdef SUPPORT_FLASH_BY_BUS<br />#ifdef SUPPORT_GPIO_BUS_FUNCTION<br />#define FLASH_CLE (1 << 1)<br />#define FLASH_ALE (1 << 2)<br />#define FLASH_WP (1 << 3)<br />#define FLASH_CLE_LOW (Bus1SetBit(FLASH_CLE, 0))<br />#define FLASH_CLE_HIGH (Bus1SetBit(FLASH_CLE, 1))<br />#define FLASH_ALE_LOW (Bus1SetBit(FLASH_ALE, 0))<br />#define FLASH_ALE_HIGH (Bus1SetBit(FLASH_ALE, 1))<br />#define FLASH_WP_LOW (Bus1SetBit(FLASH_WP, 0))<br />#define FLASH_WP_HIGH (Bus1SetBit(FLASH_WP, 1))<br /><br />#define FLASH_CE 100<br />#define FLASH_WE 4<br />#define FLASH_RE 5<br />#define FLASH_RB 6<br />#define FLASH_CE_LOW (GPIO_O_SET(FLASH_CE, 0))<br />#define FLASH_CE_HIGH (GPIO_O_SET(FLASH_CE, 1))<br />#define FLASH_WE_LOW (GPIO_O_SET(FLASH_WE, 0))<br />#define FLASH_WE_HIGH (GPIO_O_SET(FLASH_WE, 1))<br />#define FLASH_RE_LOW (GPIO_O_SET(FLASH_RE, 0))<br />#define FLASH_RE_HIGH (GPIO_O_SET(FLASH_RE, 1))<br />#define FLASH_RB_READ (GPIO_I_GET(FLASH_RB))<br />#else<br />#define FLASH_CLE 16<br />#define FLASH_ALE 17<br />#define FLASH_WP 18<br />#define FLASH_CE 100<br />#ifdef IC_8202D<br />#define FLASH_WE 66<br />#define FLASH_RE 67<br />#define FLASH_RB 68<br />#else<br />#define FLASH_WE 0<br />#define FLASH_RE 1<br />#define FLASH_RB 2<br />#endif<br /><br />#define FLASH_CLE_LOW (GPIO_O_SET(FLASH_CLE, 0))<br />#define FLASH_CLE_HIGH (GPIO_O_SET(FLASH_CLE, 1))<br />#define FLASH_ALE_LOW (GPIO_O_SET(FLASH_ALE, 0))<br />#define FLASH_ALE_HIGH (GPIO_O_SET(FLASH_ALE, 1))<br />#define FLASH_WP_LOW (GPIO_O_SET(FLASH_WP, 0))<br />#define FLASH_WP_HIGH (GPIO_O_SET(FLASH_WP, 1))<br />#define FLASH_CE_LOW (GPIO_O_SET(FLASH_CE, 0))<br />#define FLASH_CE_HIGH (GPIO_O_SET(FLASH_CE, 1))<br />#define FLASH_WE_LOW (GPIO_O_SET(FLASH_WE, 0))<br />#define FLASH_WE_HIGH (GPIO_O_SET(FLASH_WE, 1))<br />#define FLASH_RE_LOW (GPIO_O_SET(FLASH_RE, 0))<br />#define FLASH_RE_HIGH (GPIO_O_SET(FLASH_RE, 1))<br />#define FLASH_RB_READ (GPIO_I_GET(FLASH_RB))<br />#endif<br /><br />#define CMD_RESET 0xFF<br />#define CMD_ERASE_1st 0x60<br />#define CMD_ERASE_2nd 0xD0<br />#define CMD_PROGRAM_1st 0x80<br />#define CMD_PROGRAM_2nd 0x10<br />#define CMD_READ_1_0 0x00<br />#define CMD_READ_1_1 0x01<br />#define CMD_READ_2 0x50<br />#define CMD_READ_3 0x30<br />#define CMD_READ_ID 0x90<br />#define CMD_READ_STATUS 0x70<br /><br />#define FLASH_ID_SAMSUNG 0xEC<br />#define FLASH_ID_TOSHIBA 0x98<br />#define FLASH_ID_HYNIX 0xAD<br /><br />#define FLASH_TYPE_32MB 0x01<br />#define FLASH_TYPE_64MB 0x02<br />#define FLASH_TYPE_128MB 0x03<br />#define FLASH_TYPE_256MB 0x04<br />#define FLASH_TYPE_512MB 0x05<br />#define FLASH_TYPE_1GB 0x06<br /><br />#define FLASH_TABLE_ID1 0xCF<br />#define FLASH_TABLE_ID2 0x70<br />#define FLASH_TABLE_ID3 0x12<br /><br />#else // Flash controlled by MCU<br /><br />#define FLASH_CS 41<br />#define FLASH_SCK 42<br />#define FLASH_SI 12<br />#define FLASH_SO 13<br /><br />#define FLASH_CS_LOW (GPIO_O_SET(FLASH_CS, 0))<br />#define FLASH_CS_HIGH (GPIO_O_SET(FLASH_CS, 1))<br />#define FLASH_SCK_LOW (GPIO_O_SET(FLASH_SCK, 0))<br />#define FLASH_SCK_HIGH (GPIO_O_SET(FLASH_SCK, 1))<br />#define FLASH_SO_LOW (GPIO_O_SET(FLASH_SO, 0))<br />#define FLASH_SO_HIGH (GPIO_O_SET(FLASH_SO, 1))<br />#define FLASH_SI_READ (GPIO_I_GET(FLASH_SI))<br /><br />#define CMD_MEMORY_PAGE_BUF1 0xa1<br />#define CMD_MEMORY_ARRAY_READ 0xb2<br />#define CMD_MEMORY_ERASE_BUF 0xc3<br />#define CMD_STATUS_REG_READ 0x28<br /><br />#define STATUS_NOT_BUSY 0x82<br />#endif
|