我现在选择片选gpmc-csn3,采用八位数据传输,地址线13条,使用wait1进行读写数据。
#define Test_GPMC_BASEADRR (0x50000000)
#define Test_GPMC_REVISION (0x0)
#define Test_GPMC_SYSCONFIG (0x10)
#define Test_GPMC_SYSSTATUS (0x14)
#define Test_GPMC_IRQSTATUS (0x18)
#define Tedt_GPMC_IRQENABLE (0x1c)
#define GPMC_TIMEOUT_CONTROL (0x40)
#define Test_GPMC_CONFIG (0x50)
#define Test_GPMC_CONFIG_1_ADDR (0xF0)
#define Test_GPMC_CONFIG_2_ADDR (0xF4)
#define Test_GPMC_CONFIG_3_ADDR (0xF8)
#define Test_GPMC_CONFIG_4_ADDR (0xFC)
#define Test_GPMC_CONFIG_5_ADDR (0x100)
#define Test_GPMC_CONFIG_6_ADDR (0x104)
#define Test_GPMC_CONFIG_7_ADDR (0x108)
#define Test_GPMC_CONFIG_7_0_ADDR (0x78)
#define Test_GPMC_CONFIG_7_1_ADDR (0xA8)
#define Test_GPMC_CONFIG_7_2_ADDR (0xD8)
#define Test_GPMC_CONFIG_7_4_ADDR (0x138)
#define Test_GPMC_CONFIG_7_5_ADDR (0x168)
#define Test_GPMC_CONFIG_1_DATA (0x610000)//0x04690003
#define Test_GPMC_CONFIG_2_DATA (0x81001)//0x00070900//0x00070901
#define Test_GPMC_CONFIG_3_DATA (0x00000000)//0x00000000
#define Test_GPMC_CONFIG_4_DATA (0x7010F01)//0x06010701//0x07010909
#define Test_GPMC_CONFIG_5_DATA (0xE0810)//0x0009070C//0x0008070A
#define Test_GPMC_CONFIG_6_DATA (0xE0002C1)//0x08000000//
#define Test_GPMC_CONFIG_7_DATA (0x00000F02)//0x00000F58
void zq_NewGPMCPinMux(void){
//data line
/* GPMC_AD0 */
HWREG(zq_Use_Base + gpmc_ad0) =( 0 << zq_CONF_GPMC_AD0_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_AD0_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD0_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_AD0_RXACTIVE_SHIFT);
/* GPMC_AD1 */
HWREG(zq_Use_Base + gpmc_ad1) =( 0 << zq_CONF_GPMC_AD1_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_AD1_PUDEN_SHIFT)|( 0 << zq_CONF_GPMC_AD1_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_AD1_RXACTIVE_SHIFT) ;
/* GPMC_AD2 */
HWREG(zq_Use_Base + gpmc_ad2) =( 0 << zq_CONF_GPMC_AD2_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_AD2_PUDEN_SHIFT)|( 0 << zq_CONF_GPMC_AD2_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_AD2_RXACTIVE_SHIFT) ;
/* GPMC_AD3 */
HWREG(zq_Use_Base + gpmc_ad3) =( 0 << zq_CONF_GPMC_AD3_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_AD3_PUDEN_SHIFT)|( 0 << zq_CONF_GPMC_AD3_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_AD3_RXACTIVE_SHIFT) ;
/* GPMC_AD4 */
HWREG(zq_Use_Base + gpmc_ad4) =( 0 << zq_CONF_GPMC_AD4_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_AD4_PUDEN_SHIFT)|( 0 << zq_CONF_GPMC_AD4_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_AD4_RXACTIVE_SHIFT) ;
/* GPMC_AD5 */
HWREG(zq_Use_Base + gpmc_ad5) =( 0 << zq_CONF_GPMC_AD5_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_AD5_PUDEN_SHIFT)|( 0 << zq_CONF_GPMC_AD5_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_AD5_RXACTIVE_SHIFT) ;
/* GPMC_AD6 */
HWREG(zq_Use_Base + gpmc_ad6) =( 0 << zq_CONF_GPMC_AD6_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_AD6_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD6_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_AD6_RXACTIVE_SHIFT) ;
/* GPMC_AD7 */
HWREG(zq_Use_Base + gpmc_ad7) =( 0 << zq_CONF_GPMC_AD7_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_AD7_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD7_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_AD7_RXACTIVE_SHIFT) ;
/* GPMC_AD8 */
// HWREG(zq_Use_Base + gpmc_ad8) =( 7 << zq_CONF_GPMC_AD8_MMODE_SHIFT) |( 1 << zq_CONF_GPMC_AD8_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD8_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_AD8_RXACTIVE_SHIFT) ;
/* GPMC_AD9 */
// HWREG(zq_Use_Base + gpmc_ad9) =( 7 << zq_CONF_GPMC_AD9_MMODE_SHIFT) |( 1 << zq_CONF_GPMC_AD9_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD9_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_AD9_RXACTIVE_SHIFT) ;
/* GPMC_AD10 */
// HWREG(zq_Use_Base + gpmc_ad10) =( 7 << zq_CONF_GPMC_AD10_MMODE_SHIFT) |( 1 << zq_CONF_GPMC_AD10_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD10_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_AD10_RXACTIVE_SHIFT) ;
/* GPMC_AD11 */
// HWREG(zq_Use_Base + gpmc_ad11) =( 7 << zq_CONF_GPMC_AD11_MMODE_SHIFT) |( 1 << zq_CONF_GPMC_AD11_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD11_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_AD11_RXACTIVE_SHIFT) ;
/* GPMC_AD12 */
// HWREG(zq_Use_Base + gpmc_ad12) =( 7 << zq_CONF_GPMC_AD12_MMODE_SHIFT) |( 1 << zq_CONF_GPMC_AD12_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD12_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_AD12_RXACTIVE_SHIFT) ;
/* GPMC_AD13 */
// HWREG(zq_Use_Base + gpmc_ad13) =( 7 << zq_CONF_GPMC_AD13_MMODE_SHIFT) |( 1 << zq_CONF_GPMC_AD13_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD13_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_AD13_RXACTIVE_SHIFT) ;
/* GPMC_AD14 */
// HWREG(zq_Use_Base + gpmc_ad14) =( 7 << zq_CONF_GPMC_AD14_MMODE_SHIFT) |( 1 << zq_CONF_GPMC_AD14_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD14_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_AD14_RXACTIVE_SHIFT) ;
/* GPMC_AD15 */
// HWREG(zq_Use_Base + gpmc_ad15) =( 7 << zq_CONF_GPMC_AD15_MMODE_SHIFT) |( 1 << zq_CONF_GPMC_AD15_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_AD15_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_AD15_RXACTIVE_SHIFT) ;
//address line
/* GPMC_A0 */
HWREG(zq_Use_Base+gpmc_a0)=( 1 << zq_CONF_GPMC_A0_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A0_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A0_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A0_RXACTIVE_SHIFT) ;
/* GPMC_A1 */
HWREG(zq_Use_Base+gpmc_a1)=( 1 << zq_CONF_GPMC_A1_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A1_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A1_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A1_RXACTIVE_SHIFT) ;
/* GPMC_A2 */
HWREG(zq_Use_Base+gpmc_a2)=( 1 << zq_CONF_GPMC_A2_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A2_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A2_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A2_RXACTIVE_SHIFT) ;
/* GPMC_A3 */
HWREG(zq_Use_Base+gpmc_a3)=( 1 << zq_CONF_GPMC_A3_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A3_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A3_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A3_RXACTIVE_SHIFT) ;
/* GPMC_A4 */
HWREG(zq_Use_Base+gpmc_a4)=( 1 << zq_CONF_GPMC_A4_MMODE_SHIFT) |(0 << zq_CONF_GPMC_A4_PUDEN_SHIFT) |( 0<< zq_CONF_GPMC_A4_PUTYPESEL_SHIFT) | ( 0 << zq_CONF_GPMC_A4_RXACTIVE_SHIFT) ;
/* GPMC_A5 */
HWREG(zq_Use_Base+gpmc_a5)=( 1 << zq_CONF_GPMC_A5_MMODE_SHIFT) |( 0<< zq_CONF_GPMC_A5_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A5_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A5_RXACTIVE_SHIFT) ;
/* GPMC_A6 */
HWREG(zq_Use_Base+gpmc_a6)=( 1 << zq_CONF_GPMC_A6_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A6_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A6_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A6_RXACTIVE_SHIFT) ;
/* GPMC_A7 */
HWREG(zq_Use_Base+gpmc_a7)=( 1 << zq_CONF_GPMC_A7_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A7_PUDEN_SHIFT) |( 0<< zq_CONF_GPMC_A7_PUTYPESEL_SHIFT) |(0 << zq_CONF_GPMC_A7_RXACTIVE_SHIFT) ;
/* GPMC_A8 */
HWREG(zq_Use_Base+gpmc_a8)=( 1 << zq_CONF_GPMC_A8_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A8_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A8_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A8_RXACTIVE_SHIFT) ;
/* GPMC_A9 */
HWREG(zq_Use_Base+gpmc_a9)=( 1 << zq_CONF_GPMC_A9_MMODE_SHIFT) |(0 << zq_CONF_GPMC_A9_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A9_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A9_RXACTIVE_SHIFT) ;
/* GPMC_A10 */
HWREG(zq_Use_Base+gpmc_a10)=( 1 << zq_CONF_GPMC_A10_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A10_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A10_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A10_RXACTIVE_SHIFT) ;
/* GPMC_A11 */
HWREG(zq_Use_Base+gpmc_a11)=( 1 << zq_CONF_GPMC_A11_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A11_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A11_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A11_RXACTIVE_SHIFT) ;
/* GPMC_A12 */
HWREG(zq_Use_Base+gpmc_a12)=( 1 << zq_CONF_GPMC_A12_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A12_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A12_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A12_RXACTIVE_SHIFT) ;
/* GPMC_A13 */
HWREG(zq_Use_Base+gpmc_a13)=( 1 << zq_CONF_GPMC_A13_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_A13_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_A13_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_A13_RXACTIVE_SHIFT) ;
//HWREG(zq_Use_Base+gpmc_csn0)=( 7 << zq_CONF_GPMC_CSN3_MMODE_SHIFT)|( 0 << zq_CONF_GPMC_CSN3_MMODE_SHIFT)|( 1 << zq_CONF_GPMC_CSN3_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_CSN3_RXACTIVE_SHIFT) ;
/* GPMC_CS3 zq_gpmc_csn3 0x87c+0x12=0x888 */
HWREG(zq_Use_Base+gpmc_csn3)=( 0 << zq_CONF_GPMC_CSN3_MMODE_SHIFT) |(0 << zq_CONF_GPMC_CSN3_PUDEN_SHIFT) |(1 << zq_CONF_GPMC_CSN3_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_CSN3_RXACTIVE_SHIFT) ;
// HWREG(zq_Use_Base+gpmc_csn3)=( 0 << zq_CONF_GPMC_CSN3_MMODE_SHIFT) |(0 << zq_CONF_GPMC_CSN3_PUDEN_SHIFT) |(0 << zq_CONF_GPMC_CSN3_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_CSN3_RXACTIVE_SHIFT) ;
/* gpmc_wait */
HWREG(zq_Use_Base+gpmc_wait)=( 2 << zq_CONF_GPMC_WAIT_MMODE_SHIFT) | ( 0 << zq_CONF_GPMC_WAIT_PUDEN_SHIFT) |( 1 << zq_CONF_GPMC_WAIT_PUTYPESEL_SHIFT) |( 1<< zq_CONF_GPMC_WAIT_RXACTIVE_SHIFT) ;
//HWREG(zq_Use_Base+gpmc_wait)=( 2 << zq_CONF_GPMC_WAIT_MMODE_SHIFT) | ( 0 << zq_CONF_GPMC_WAIT_PUDEN_SHIFT) |( 1 << zq_CONF_GPMC_WAIT_PUTYPESEL_SHIFT) |( 1<< zq_CONF_GPMC_WAIT_RXACTIVE_SHIFT) ;
/*gpmc_wait0*/
// HWREG(zq_Use_Base+gpmc_wait0)=( 7 << zq_CONF_GPMC_WAIT0_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_WAIT0_PUDEN_SHIFT) |( 1 << zq_CONF_GPMC_WAIT0_PUTYPESEL_SHIFT) |( 1 << zq_CONF_GPMC_WAIT0_RXACTIVE_SHIFT) ;
/*gpmc_oen_ren*/
HWREG(zq_Use_Base+gpmc_oen_ren)=( 0 << zq_CONF_GPMC_OEN_REN_MMODE_SHIFT) |(1<< zq_CONF_GPMC_OEN_REN_PUDEN_SHIFT) |(0<< zq_CONF_GPMC_OEN_REN_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_OEN_REN_RXACTIVE_SHIFT) ;
// HWREG(zq_Use_Base+gpmc_oen_ren)=( 0 << zq_CONF_GPMC_OEN_REN_MMODE_SHIFT) |(0<< zq_CONF_GPMC_OEN_REN_PUDEN_SHIFT) |(1<< zq_CONF_GPMC_OEN_REN_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_OEN_REN_RXACTIVE_SHIFT) ;
/*gpmc_advn_ale*/
// HWREG(zq_Use_Base+gpmc_be0n_cle)=( 7 << zq_CONF_GPMC_OEN_REN_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_OEN_REN_PUDEN_SHIFT) |( 0 << zq_CONF_GPMC_OEN_REN_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_OEN_REN_RXACTIVE_SHIFT) ;
//HWREG(zq_Use_Base+gpmc_advn_ale)=( 7 << zq_CONF_GPMC_ADVN_ALE_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_ADVN_ALE_PUDEN_SHIFT) |( 1 << zq_CONF_GPMC_ADVN_ALE_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_ADVN_ALE_RXACTIVE_SHIFT) ;
/*gpmc_wen*/
// HWREG(zq_Use_Base+gpmc_wen)=( 0 << zq_CONF_GPMC_WEN_MMODE_SHIFT) |( 0<< zq_CONF_GPMC_WEN_PUDEN_SHIFT) | (1 << zq_CONF_GPMC_WEN_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_WEN_RXACTIVE_SHIFT) ;
HWREG(zq_Use_Base+gpmc_wen)=( 0 << zq_CONF_GPMC_WEN_MMODE_SHIFT) |( 1<< zq_CONF_GPMC_WEN_PUDEN_SHIFT) | (0 << zq_CONF_GPMC_WEN_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_WEN_RXACTIVE_SHIFT) ;
/*gpmc_be0n_cle*/
//HWREG(zq_Use_Base+gpmc_be0n_cle)=( 0 << zq_CONF_GPMC_BE0N_CLE_MMODE_SHIFT) |( 0 << zq_CONF_GPMC_BE0N_CLE_PUDEN_SHIFT) |( 1 << zq_CONF_GPMC_BE0N_CLE_PUTYPESEL_SHIFT) |( 0 << zq_CONF_GPMC_BE0N_CLE_RXACTIVE_SHIFT) ;
}
void test_GPMC_Init(void){
zq_NewGPMCPinMux();
zq_NewGPMCClkConfig();
HWREG(Test_GPMC_BASEADRR+Test_GPMC_SYSCONFIG)=0x0a;
printf("—-%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_REVISION));
printf("—-%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_SYSSTATUS));
while(HWREG(Test_GPMC_BASEADRR+Test_GPMC_SYSSTATUS) != 0x01){
printf("—-%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_SYSSTATUS));
}
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_0_ADDR))&=(~(1<<6));
printf("7-0—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_7_0_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_1_ADDR))&=(~(1<<6));
printf("7-1—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_7_1_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_2_ADDR))&=(~(1<<6));
printf("7-2—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_7_2_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_4_ADDR))&=(~(1<<6));
printf("7-4—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_7_4_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_5_ADDR))&=(~(1<<6));
printf("7-5—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_7_5_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_ADDR))&=(~(1<<6));
printf("7-3—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_7_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG))|=(1<<9);
printf("GPMC_CONFIG—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG))&=(~(1<<1));
printf("GPMC_CONFIG—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG));
delay_ms(5);
HWREG(Test_GPMC_BASEADRR+Test_GPMC_IRQSTATUS)=0x0;
delay_ms(5);
HWREG(Test_GPMC_BASEADRR+Tedt_GPMC_IRQENABLE)=0x0;
delay_ms(5);
HWREG(Test_GPMC_BASEADRR+GPMC_TIMEOUT_CONTROL)=0x0;
delay_ms(5);
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_ADDR))|=(0xf<<8);
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_ADDR))|=(0x2);
printf("Test_GPMC_CONFIG_7_ADDR—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_7_ADDR));
delay_ms(5);
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_1_ADDR))=Test_GPMC_CONFIG_1_DATA;
delay_ms(5);
printf("Test_GPMC_CONFIG_1_ADDR—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_1_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_2_ADDR))=Test_GPMC_CONFIG_2_DATA;
delay_ms(5);
printf("Test_GPMC_CONFIG_2_ADDR—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_2_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_3_ADDR))=Test_GPMC_CONFIG_3_DATA;
delay_ms(5);
printf("Test_GPMC_CONFIG_3_ADDR—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_3_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_4_ADDR))=Test_GPMC_CONFIG_4_DATA;
delay_ms(5);
printf("Test_GPMC_CONFIG_4_ADDR—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_4_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_5_ADDR))=Test_GPMC_CONFIG_5_DATA;
delay_ms(5);
printf("Test_GPMC_CONFIG_5_ADDR—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_5_ADDR));
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_6_ADDR))=Test_GPMC_CONFIG_6_DATA;
delay_ms(5);
printf("Test_GPMC_CONFIG_6_ADDR—–%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_6_ADDR));
delay_ms(5);
HWREG((Test_GPMC_BASEADRR)+(Test_GPMC_CONFIG_7_ADDR))|= (1<<6);
printf("Test_GPMC_CONFIG_7_ADDR—-%d\n",HWREG(Test_GPMC_BASEADRR+Test_GPMC_CONFIG_7_ADDR));
}
以上是对针脚和时序、地址的配置,但是测试是不能找到地址,请问是什么原因。
data=(*((volatile unsigned int *)(0x50000048)));
//BaseAdd++;
printf("err:—%d\n",data);
//delay_ms_Sram(50);
// (*((volatile unsigned short *)(0x02000000)))=0x1;
delay_ms_Sram(50);
data=(*((volatile unsigned short *)(0x02000000)));
片选cs一直不能拉低,为什么?
xuebo zhang1:
这是读写时序图
xuebo zhang1:
以上是时序图,下面是对应的时间
谢谢了,希望帮解决下!
xuebo zhang1:
回复 xuebo zhang1:
请给予回答
Tony Tang:
回复 xuebo zhang1:
可以参考一下Starterware里有NAND例程:
C:\ti\AM335X_StarterWare_02_00_01_01\build\armv7a\cgt_ccs\am335x\evmAM335x\nand
TI中文支持网





