|
关于WINCE的SPI的流驱动的读数据的问题,很奇怪,我能发数据,但是读不了数据
[复制链接]
我的SPI驱动程序里面的读写函数,并且我设置为POLLING模式和中断模式都试过
DWORD SPI_Read(DWORD Handle, LPVOID pBuffer, DWORD dwNumBytes)
{
PUCHAR readtemp=(PUCHAR)pBuffer;
while( (v_pSSPregs->rSPSTA0 & 0x01) != 1 );
v_pSSPregs->rSPTDAT0=0xff; //发送0XFF数据,单片机接受到0XFF后,就发送消息;
while( (v_pSSPregs->rSPSTA0 & 0x01) != 1 );
*readtemp=v_pSSPregs->rSPRDAT0; //此时接收到的数据,应该是上一个0XFF发给单片机后,单片机往它的SPI发送寄存器打入的数据
return 1;
}
DWORD SPI_Write(DWORD Handle, LPCVOID pBuffer, DWORD dwNumBytes)
{
PUCHAR writetemp = (PUCHAR)pBuffer;
while( (v_pSSPregs->rSPSTA0 & 0x01) != 1 );
v_pSSPregs->rSPTDAT0 = *writetemp;
while( (v_pSSPregs->rSPSTA0 & 0x01) != 1 );
return 1;
}
以下为我在EVC的API函数,测试驱动的
hDrv=CreateFile(L"SPI1:",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);//打开API
char datavalue[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; //写API,循环发送0--9
int ret,datacount;
ret=WriteFile(hDrv,datavalue+datacount,1,&dwWritten,NULL);
datacount=datacount+1;
if(datacount==10)
{
datacount=0;
}
char datavalue1; 读API
ReadFile(hDrv,&datavalue1,1,&dwread,NULL);
现在出现一个问题是:
我的ARM是2410,2410的SPI和一个单片机的SPI口连接
我现在遇到的问题是,将驱动程序烧进WINCE内核,然后用EVC写了个程序来运行,先打开API,然后写API函数时候,SPI能把数据发给单片机。但是读API函数就不行了,读不到任值。
写API的时候,在时钟线上用示波器可以看到时钟,但是读API的时候,在时钟线上用示波器看不到时钟(按道理说应该能看到的,应为我读API的时候,其实在驱动程序的SPI_Read函数里面,其实是先发送了一个0XFF出去的),我觉得很奇怪,但是我自己也找不到什么原因
请高手指教
|
|