最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關(guān)于SPI口和AT45DB081連接的問題!

作者:usbfd 欄目:ARM技術(shù)
關(guān)于SPI口和AT45DB081連接的問題!
#define SPIbaud 5000000    //5M
void Spi_iic(void)//初始化,對(duì)嗎???
{
    uint32 a;
    SPI_SPCCR    =8;    //(Fpclk/SPIbaud)&0xfe;    //時(shí)鐘計(jì)數(shù) 7.5M
    a    =SPI_SPSR;
    SPI_SPINT    =1;    //中斷寄存器
    SPI_SPCR    =0x30;    //控制寄存器,main mode
}
uint8 Read_AT_status(void)讀狀態(tài)讀不出???
{
    IOCLR = 1<<ATCS;        //片選AT45DB161
    while((SPIRW(0x57)&0x80)==0)DelayNS(1);    //    
    IOSET = 1<<ATCS;        //釋放AT45DB161
    return 1;
}
指點(diǎn)一下。芯片確保是好的

2樓: >>參與討論
slump
放一段程序吧。讀寫沒優(yōu)化過,但保證能用
INT8U   AT45DBBuf[528];
static  OS_EVENT* AT45DBSem;

void AT45DBInit(void)
{
#if OS_CRITICAL_METHOD == 3
  OS_CPU_SR  cpu_sr;
#endif

  AT45DBSem = OSSemCreate(1);
  OS_ENTER_CRITICAL();
  PCONP   |= 0x00000100;
  PINSEL0 &= 0xFFFF00FF;
  PINSEL0 |= 0x00005500;
  IO0DIR  |= AT45DB_CS;
  IO0SET   = AT45DB_CS;
  OS_EXIT_CRITICAL();
}

void AT45DBRead(INT16U u16_page)
{
#if OS_CRITICAL_METHOD == 3
  OS_CPU_SR  cpu_sr;
#endif
  INT16U u16_cnt;
  INT8U  u8_err;

  OSSemPend(AT45DBSem,0,&u8_err);
  OS_ENTER_CRITICAL();
  S0PCR  = 0x38;
  S0PCCR = FPCLK/2000000*2;
  
  IO0CLR = AT45DB_CS;
  S0PDR  = 0x52;
  while(0 == (S0PSR&0x80));
  S0PDR = (INT8U)(u16_page>>6);
  while(0 == (S0PSR&0x80));
  S0PDR = ((INT8U)(u16_page))<<2;
  while(0 == (S0PSR&0x80));
  S0PDR = 0x00;
  while(0 == (S0PSR&0x80));
  
  S0PDR = 0x00;
  while(0 == (S0PSR&0x80));
  S0PDR = 0x00;
  while(0 == (S0PSR&0x80));
  S0PDR = 0x00;
  while(0 == (S0PSR&0x80));
  S0PDR = 0x00;
  while(0 == (S0PSR&0x80));
  
  for(u16_cnt=0;u16_cnt<528;u16_cnt++)
  {
    S0PDR = 0x00;
    while(0 == (S0PSR&0x80));
    AT45DBBuf[u16_cnt] = S0PDR;
  }
  IO0SET = AT45DB_CS;
  
  OS_EXIT_CRITICAL();
  OSSemPost(AT45DBSem);
}

void AT45DBWrite(INT16U u16_page)
{
#if OS_CRITICAL_METHOD == 3
  OS_CPU_SR  cpu_sr;
#endif
  INT16U u16_cnt;
  INT8U  u8_err;
  
  OSSemPend(AT45DBSem,0,&u8_err);
  OS_ENTER_CRITICAL();
  S0PCR  = 0x38;
  S0PCCR = FPCLK/2000000*2;
  IO0CLR = AT45DB_CS;
  
  S0PDR = 0x82;
  while(0 == (S0PSR&0x80));
  S0PDR = (INT8U)(u16_page>>6);
  while(0 == (S0PSR&0x80));
  S0PDR = ( (INT8U)(u16_page))<<2;
  while(0 == (S0PSR&0x80));
  S0PDR = 0x00;
  while(0 == (S0PSR&0x80));
    
  for(u16_cnt=0;u16_cnt<528;u16_cnt++)
  {
    S0PDR = AT45DBBuf[u16_cnt];
    while(0 == (S0PSR&0x80));
  }
  
  IO0SET = AT45DB_CS;
  OS_EXIT_CRITICAL();
  
  OSTimeDly(20);
  OSSemPost(AT45DBSem);   
}

3樓: >>參與討論
usbfd
謝謝!我參考參考!
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
做過PDIUSB
請(qǐng)問周公
是否可以布雙層PCB板
為什么用ISP時(shí),按照書上的步驟做了,但是卻用不了
各位朋友:AXD前面有個(gè)紅圈加斜線是否表示不能調(diào)試啊?
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)