s3c6410 winCE6.0 IIC驱动BUG 再续
2009-11-05 09:58
141 查看
读过程中最后一个字节不要给ACK到器件,则器件不会继续发送数据,否则,器件自动发送下一个地址的字节数据! 之前的修改(http://blog.csdn.net/knock/archive/2009/11/02/4758818.aspx)有误。
case Master_receive:
。。。。。
if (g_uIIC_PT==g_uIIC_DATALEN)
{
g_pIICReg->IICCON &= ~(1<<7); //注释掉会导致器件继续发数据,多次进入中断
}
。。。。。
总的来说,在原版的基础上,修改的有两个问题:
1.修改为驱动内自己的buffer接收IIC总线上的数据,然后copy到应用程序的buffer
2.修改中断服务里IIC_IST()判断一个读或写完成的条件
if (bDone)
{
RETAILMSG(ZONE_INFO, (TEXT("SetEvent DONE/r/n")));
bDone = FALSE; //添加这行
SetEvent(g_hTransferDone);
}
这样修改过后,我的调试助手读写再也没出错,秀一下,呵呵~~
打开camera的应用程序,写完camera模块寄存器后,不会再出现类似错误
Exception 'Data Abort' (4): Thread-Id=01840006(pth=85aa48d4), Proc-Id=00400002(pprc=82699308) 'NK.EXE', VM-active=04ec0006(pprc=849cda50) 'explorer.exe'
PC=c0b721cc(s3c6410_iic.dll+0x000021cc) RA=c0b721b8(s3c6410_iic.dll+0x000021b8) SP=d283fe64, BVA=0004f2cd
但用示波器抓发现camera应用程序打开后,读寄存器,前三个字节都正常,有ACK,读到的第四字节全是0x00,而关闭camera应用程序后,示波器抓到又是有数据的。
这个问题先放放,等闲下来再仔细找原因。
相关文章推荐
- s3c6410 winCE6.0 IIC驱动BUG
- s3c6410 winCE6.0 IIC驱动BUG 续
- WinCE6.0+ S3C6410 IIC驱动学习
- s3c6410 winCE6.0 IIC驱动读写冲突
- WinCE6.0+ S3C6410 IIC驱动源码学习
- Wince6.0 s3c6410触摸屏驱动分析
- 摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
- wince6.0 s3c6410部分bsp驱动开发分析
- 摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
- 也谈WinCE6.0+S3C6410 IIC驱动Bug
- 摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
- wince6.0 s5pv210 iic驱动 报错
- 调试 S3C6410 IIC 的wince驱动总结
- linux中的IIC设备驱动
- Linux IIC驱动笔记
- Mysql最新驱动jar包存在bug?
- USB学习总结1—s3c6410的USB驱动修改
- mcp2515 芯片驱动总线错误BUG的解决方法(主要无法进入中断bug)
- 基于S3c6410触摸屏驱动分析(二)
- S3C6410的GPIO流驱动(WINCE600)