当前位置:首页 » 编程软件 » 编译xdma

编译xdma

发布时间: 2022-10-31 14:16:12

㈠ WINCE 6.0 SPI驱动如何工作起来

给你一些意见,我自己总结的,不知道对不对!
1,如何编译出spi.dll文件
BSP默认是不生成spi.dll文件的,可以通过设置smdk210.bat文件中的BSP_NOSPI=1设置为BSP_NOSPI=即可,因为
在source文件中添加了!if "$(BSP_NOSPI)" == "1" SKIPBUILD=1 !endif 选项
2,spi_INIT失败 Error KernelIoControl问题
找到原因是isri.dwIrq的值 为-1
解决办法:在DDKReg_GetIsrInfo的定义中看到
// If no IRQ value is specified in the registry, dwIrq will be set to IRQ_UNSPECIFIED.
// If no SYSINTR value is specified in the registry, dwSysintr will be set to SYSINTR_NOP.
这里需要设置注册表项WRITE_REG_DWORD(DrvKey,L"Irq", DriverIRQ); DriverIRQ为spi的物理中断号
不需要设置Sysintr,一般采用动态申请的方式。
还要设置WRITE_REG_DWORD(DrvKey,L"DeviceArrayIndex", DriverDeviceArrayIndex);这个是什么我也不知道
3,对spi的初始化
static void InitSpiConfig(BOOL mode)
{
if (mode)//master
{
spiConfig.dwMode = SPI_MASTER_MODE;
}
else//slave
{
spiConfig.dwMode = SPI_SLAVE_MODE;
}
/*receive & send use interrupt mode, not use DMA mode*/
spiConfig.bUseRxDMA = FALSE;
spiConfig.bUseRxIntr = TRUE;
spiConfig.bUseTxDMA = FALSE;
spiConfig.bUseTxIntr = TRUE;
spiConfig.dwLineStrength = 0;
spiConfig.dwFBClkSel = 0;
spiConfig.Format = SPI_FORMAT_1;
/*setting SPI's pre-fre and time-out value*/

spiConfig.dwTimeOutVal = 0;
spiConfig.dwPrescaler = 120;
if( DeviceIoControl(hdDevice, SPI_IOCTL_SET_CONFIG, &spiConfig, sizeof(spiConfig), NULL, NULL, NULL, NULL)!=TRUE )
{
RETAILMSG(1, (TEXT("[SPI1] SPI_IOCTL_SET_CONFIG fail\r\n")));
}

if( DeviceIoControl(hdDevice, SPI_IOCTL_START, NULL, NULL, NULL, NULL, NULL, NULL)!=TRUE )
{
RETAILMSG(1, (TEXT("[SPI1] SPI_IOCTL_START fail\r\n")));
}
}

如果还是不行的话,再问吧!

热点内容
缓存属于虚拟内存吗 发布:2025-09-12 07:12:17 浏览:345
编程在线培训好 发布:2025-09-12 07:10:17 浏览:836
可变轴编程 发布:2025-09-12 06:50:08 浏览:376
android编程实例 发布:2025-09-12 06:44:10 浏览:588
java加解密 发布:2025-09-12 06:30:59 浏览:923
php简单的mvc框架 发布:2025-09-12 06:30:51 浏览:367
杂牌服务器如何重装系统 发布:2025-09-12 06:22:44 浏览:422
oracle数据库日志 发布:2025-09-12 06:16:57 浏览:265
安卓ins为什么显示没有特效 发布:2025-09-12 06:13:04 浏览:233
苹果运动手环如何连安卓 发布:2025-09-12 06:07:59 浏览:63