找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5318|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

LPC214x單片機(jī)USB(cdc)與uip移植

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:73477 發(fā)表于 2015-2-10 00:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
一:遇到問題
  1:usb-cdc協(xié)議移植出現(xiàn) SET_LINE_CODING命令響應(yīng)返回bufferover錯(cuò)誤
  2: usb傳輸速率過快出現(xiàn)單片機(jī)死機(jī),程序停止在 while((USBDevIntSt & CDFULL) == 0);     /* 等待DEVINTS寄存器的CDFULL位置
  3:uip移植出現(xiàn)下載程序運(yùn)行不起來
解決問題
問題一解決添加紅色代碼
else if (bEPPflags.bits.control_state == USB_RECEIVE)
{                 /* 如果當(dāng)前為接收狀態(tài) if it is receive status */
  i = USB_ReadEndpoint(0, EP0_PACKET_SIZE,
   ControlData.dataBuffer + ControlData.wCount);    /* 從端點(diǎn) 0 讀取數(shù)據(jù) read from endpoint 0 */
    if((ControlData.DeviceRequest.bRequest==SET_LINE_CODING)&&(ControlData.DeviceRequest.bmRequestType==0x21))
        {
      for(i=0;i<7;i++)
   LineCoding[ i]  = ControlData.dataBuffer[ i];
   single_transmit(0,0 );
  }
  ControlData.wCount += i;
  if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength)
  {                                                         /* 完成接收數(shù)據(jù)  finish receiving data */
   bEPPflags.bits.setup_packet = 1;          /* 通知contorl_handler()處理SETUP包  inform control_handler() to process SETUP packet */
   bEPPflags.bits.control_state = USB_IDLE;
  }
}
   if((ControlData.DeviceRequest.bRequest==SET_LINE_CODING)&&(ControlData.DeviceRequest.bmRequestType==0x21))
   {
    bEPPflags.bits.control_state = USB_RECEIVE;
   }
else
  bEPPflags.bits.control_state = USB_IDLE;
問題二解決:
由于單片機(jī)內(nèi)部總線速率在15Mhz沒有及時(shí)響應(yīng)中斷出現(xiàn)寄存器數(shù)據(jù)別覆蓋,
//系統(tǒng)時(shí)鐘
#define Fosc        12000000UL        //晶振時(shí)鐘 【Hz】
#define Fcclk      (Fosc * 5)        //系統(tǒng)頻率,必須為Fosc的整數(shù)倍(1~32),且<=60MHZ
#define Fcco     (Fcclk * 4)       //CCO頻率,必須為Fcclk的2、4、8、16倍,范圍為156MHz~320MHz
#define Fpclk       (Fcclk / 4) * 2   //VPB時(shí)鐘頻率,提升到30Mhz  提到60Mhz rtc 寄存器無法讀。????
#define FUSBclk   (Fosc * 4)      //48MHz
#define FUSBcco   (FUSBclk * 4)       //usb CCO頻率,必須為FUSBclk的2、4、8、16倍,范圍為156MHz~320MHz

問題三解決:   
刪除程序中調(diào)試輸出printf調(diào)用

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表