b27784748
驱动牛犊
驱动牛犊
  • 注册日期2007-03-13
  • 最后登录2010-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1534回复:0

求助:smdk2440串口驱动程序的问题【请各位大侠帮帮忙】

楼主#
更多 发布于:2007-04-02 15:09
问题现象:
        在串口0得不到数据?

问题描述:

 J:\WINCE420\PLATFORM\smdk2440\DRIVERS\serial\SER2440_HW.C中的函数SL_TxIntrEx

里面添加两个打印语句:

 

 

         unsigned int i, tmpreg;                                  //原有

         //<****************************************************************************************************>//

         //开始写数据  pHWHead->pUFTXH 指向-->     v_pUART0regs->rUTXH

         RETAILMSG(DEBUGMODE, (TEXT("\n************* reg address *************\r\n")));

         RETAILMSG(DEBUGMODE, (TEXT("SL_TxInt - pHWHead->pUFTXH  = 0x%x [address]\r\n"), pHWHead->pUFTXH));

         RETAILMSG(DEBUGMODE, (TEXT("SL_TxInt - &v_pUART2regs->rUTXH = 0x%x [address]\r\n"), &(v_pUART2regs->rUTXH)));

         RETAILMSG(DEBUGMODE, (TEXT("SL_TxInt - &v_pUART0regs->rUTXH = 0x%x [address]\r\n"), &(v_pUART0regs->rUTXH)));

                                    

         *(pHWHead->pUFTXH) = *pTxBuffer;                  //原有

                            

 

 

        RETAILMSG(DEBUGMODE, (TEXT("\n************* reg value *************\r\n")));

         RETAILMSG(DEBUGMODE, (TEXT("SL_TxInt - *pTxBuffer = 0x%x [value]\r\n"), *pTxBuffer));                //原有

         RETAILMSG(DEBUGMODE, (TEXT("SL_TxInt - *pHWHead->pUFTXH = 0x%x [value]\r\n"), *(pHWHead->pUFTXH)));

         RETAILMSG(DEBUGMODE, (TEXT("SL_TxInt - v_pUART0regs->rUTXH  = 0x%x [value]\r\n"), v_pUART0regs->rUTXH));

         RETAILMSG(DEBUGMODE, (TEXT("SL_TxInt - v_pUART2regs->rUTXH  = 0x%x [value]\r\n"), v_pUART2regs->rUTXH));


        

2、并定义DEBUGMODE为1

#define DEBUGMODE 1


 

 

 

 

测试程序代码是:

HANDLE hSerial;

 

         char name[2];

         unsigned long dwNumBytes=0;

         //BOOL flag;

 

         printf("\n\n************************************\n");

         printf("********* 串口测试   **********\n");

         printf("************************************\n\n");

         hSerial = CreateFile(L"COM1:", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

         //串口打开失败

         if(hSerial == NULL)

         {

                   printf("串口打开失败\n");

                   return 0;

         }

 

         ///配置串口

 

         DCB PortDCB;

         PortDCB.DCBlength = sizeof(DCB);

 

         // 默认串口参数

         GetCommState(hSerial, &PortDCB);

         PortDCB.BaudRate = 115200; // baud

         PortDCB.ByteSize = 8; // Number of bits/byte, 4-8

         PortDCB.Parity = NOPARITY;

         PortDCB.fDtrControl = DTR_CONTROL_DISABLE;

         PortDCB.fRtsControl = RTS_CONTROL_DISABLE;

         PortDCB.StopBits = ONESTOPBIT;

         //配置串口失败

         if (! SetCommState(hSerial, &PortDCB))

         {

                   printf("配置串口失败\n");

                   return 0;

         }

 

         ////配置超时值

 

         COMMTIMEOUTS CommTimeouts;

 

         GetCommTimeouts(hSerial, &CommTimeouts);

         CommTimeouts.ReadIntervalTimeout = MAXDWORD;

         CommTimeouts.ReadTotalTimeoutMultiplier = 10;

         CommTimeouts.ReadTotalTimeoutConstant = 10;

         CommTimeouts.WriteTotalTimeoutMultiplier = 50;

         CommTimeouts.WriteTotalTimeoutConstant = 100;

         //不能设置超时参数

         if (!SetCommTimeouts(hSerial, &CommTimeouts))

         {

                   printf("不能设置超时参数\n");

                   return 0;

         }

        

        

 

         int i=10;

         int j;

         for(j=0;j<i;j++)

         {

                   strcpy(name,"d");

                   //name='d';

                   printf("name 信息是%s\n",name);

                   if(!WriteFile(hSerial,name,sizeof(name),&dwNumBytes,NULL))

                            printf("\n    WriteFile 出错  error %d\n",GetLastError());

                   printf("       写了字节数dwNumBytes是%d\n",dwNumBytes);

                   Sleep(10);

         }

 

         if(hSerial != NULL)

         {

                   if(!CloseHandle(hSerial))

                            printf("关闭串口失败\n");

                   hSerial=NULL;

         }

3、下面调试口打印的信息:

SL_SetDCB : BaudRate is 9600

SL_SetDCB : Set ByteSize is 8

SL_SetDCB : Set Parity is 0

SL_SetDCB : Set StopBits is 0

-SL_SetDCB 0x36AA0

+SL_SetCommTimeout 0x36AA0

-SL_SetCommTimeout 0x36AA0

SerOpen - Bootargs ComPort 0

Use Serail

+SerSetOutputMode

-SerSetOutputMode

SerOpen - Calling SL_Open

SL_Open 0x36AA0 (0 opens)

S2440_SetIOP : SERIAL

S2440_SetSerialIOP

+SL_SetbaudRate 0x36AA0, 9600

ClearPendingInts

SetBaudRate -> 9600

-SL_SetbaudRate 0x36AA0 (9600 Baud)

+SL_SetByteSize 0x36AA0, 0x8

-SL_SetByteSize 0x36AA0

+SL_SetStopBits 0x36AA0, 0x0

-SL_SetStopBits 0x36AA0

+SL_SetParity 0x36AA0, 0x0

-SL_SetParity 0x36AA0

ClearPendingInts

SL_PostInit

ClearPendingInts

ReadLSR

Line Status Register : 0x0

SerOpen - Return TRUE

+SL_PurgeComm 0x8

SL_SetDCB : BaudRate is 115200

SL_SetDCB : Set ByteSize is 8

SL_SetDCB : Set Parity is 0

SL_SetDCB : Set StopBits is 0

SL_SetDCB : Set BaudRate to 115200

+SL_SetbaudRate 0x36AA0, 115200

ClearPendingInts

SetBaudRate -> 115200

-SL_SetbaudRate 0x36AA0 (115200 Baud)

-SL_SetDCB 0x36AA0

+SL_ClearDTR, 0x36AA0

UseIrDA, 0

-SL_ClearDTR, 0x36AA0

+SL_ClearRTS, 0x36AA0

-SL_ClearRTS, 0x36AA0

+SL_SetCommTimeout 0x36AA0

-SL_SetCommTimeout 0x36AA0

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x10002800, 0x49A, 0x0, 0x1

SL_GetInterruptType: INTR_TX

SL_TxIntrEx

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x2800, 0x49A, 0x0, 0x0

SL_GetInterruptType: INTR_NONE(pHWHead->bINT)

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x10002800, 0x49A, 0x0, 0x1

SL_GetInterruptType: INTR_TX

SL_TxIntrEx

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x2800, 0x49A, 0x0, 0x0

SL_GetInterruptType: INTR_NONE(pHWHead->bINT)

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x10002800, 0x49A, 0x0, 0x1

SL_GetInterruptType: INTR_TX

SL_TxIntrEx

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x2800, 0x49A, 0x0, 0x0

SL_GetInterruptType: INTR_NONE(pHWHead->bINT)

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x10002800, 0x49A, 0x0, 0x1

SL_GetInterruptType: INTR_TX

SL_TxIntrEx

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x2800, 0x49A, 0x0, 0x0

SL_GetInterruptType: INTR_NONE(pHWHead->bINT)

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x10002800, 0x49A, 0x0, 0x1

SL_GetInterruptType: INTR_TX

SL_TxIntrEx

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x2800, 0x49A, 0x0, 0x0

SL_GetInterruptType: INTR_NONE(pHWHead->bINT)

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x10002800, 0x49A, 0x0, 0x1

SL_GetInterruptType: INTR_TX

SL_TxIntrEx

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x2800, 0x49A, 0x0, 0x0

SL_GetInterruptType: INTR_NONE(pHWHead->bINT)

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x10002800, 0x49A, 0x0, 0x1

SL_GetInterruptType: INTR_TX

SL_TxIntrEx

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x2800, 0x49A, 0x0, 0x0

SL_GetInterruptType: INTR_NONE(pHWHead->bINT)

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x10002800, 0x49A, 0x0, 0x1

SL_GetInterruptType: INTR_TX

SL_TxIntrEx

SL_GetInterruptType : 0x79C13F18, 0x4FA, 0x2800, 0x49A, 0x0, 0x0

SL_GetInterruptType: INTR_NONE(pHWHead->bINT)

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

SL_TxIntrEx

SL_TxIntrEx : 2

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x64 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x64

 

************* reg address *************

SL_TxInt - pHWHead->pUFTXH  = 0x2d0020 [address]

SL_TxInt - &v_pUART2regs->rUTXH = 0x2f0020 [address]

SL_TxInt - &v_pUART0regs->rUTXH = 0x2d0020 [address]

 

************* reg value *************

SL_TxInt - *pTxBuffer = 0x0 [value]

SL_TxInt - *pHWHead->pUFTXH = 0x0 [value]

SL_TxInt - v_pUART0regs->rUTXH  = 0x0 [value]

SL_TxInt - v_pUART2regs->rUTXH  = 0x0 [value]

SL_TxInt - *pTxBuffer = 0x0

+SerClose

+SerSetOutputMode

-SerSetOutputMode

SL_Close

+SL_ClearRTS, 0x36AA0

-SL_ClearRTS, 0x36AA0

S2440_SetIrDAIOP

-SerClose


为什么在串口0得不到数据?
游客

返回顶部