说明:mini2440平台,wince6.0系统,vs2005
经过几个月的学学停停,终于在wince下加入了GPIO模拟的IIC总线,实现了IIC的移植,IIC的芯片是SHT21温湿度芯片。
之所以搞了这么久没搞定IIC,是在ADS下很早实现了,可就是添加到系统就总不对!示波器抓取发现时序在芯片复位后就不对了,找来找去都不知道怎么回事!这下就陷入了
纠结中,还是那种死循环的纠结,怎么都绕不出来!
网上发帖,网友们也支了很多招,感谢你们!jonsenwu网友的话提示了我!驱动程序加到系统里面,系统的调度需要时间,驱动程序使用的延时会出现延长的情况!根据他的提示,也进一步向他请教,这里特别感谢他!对驱动程序的优先级进行调整,使其在运行过程中始终保持住CPU的使用权。在ADS下测试的延时函数在系统下是不会相同的!
经过这个移植学到的东西:
1、wince下优先级相关知识
以下是代码:用于实现优先级抢占
//dwThreadID = GetCurrentThread(); //获取线程的ID
//dwThreadPri = CeGetThreadPriority(dwThreadID); //获取线程ID的优先级
//dwThreadQuantum = CeGetThreadQuantum(dwThreadID); // 获取线程的时间论片参数
//CeSetThreadPriority(dwThreadID, 0);// 设置当前线程的优先级为最高
//CeSetThreadQuantum(dwThreadID, 0); //设置当前线程的时间论片为0,保持CPU的占有权
//
//.......... (操作i2c的函数)
//
//CeSetThreadQuantum(dwThreadID, dwThreadQuantum); // 恢复正常时间论片
//CeSetThreadPriority(dwThreadID, dwThreadPri); //恢复正常优先级
说明:设置优先级有两个函数,一个函数可以设置0~255的个优先级(CeSetThreadPriority()),一个函数可以只能设置应用程序的优先级248~255(SetThreadPriority())!!
IIC调试成功后,把数据传给应用程序又出现个问题,先是在XXX_IOControl实现传递,怎么试都没数据出来,最后放到XXX_Read里面来实现就OK了。这里还要说明个关于memcpy的问题。如下:
2、对于memcpy函数的理解
先看一下出问题的写法:
unsigned short SHT_Data[2];//
memcpy( pBuffer , SHT_Data ,2 );//output
我应用程序读到的数据只有温度是对的,湿度就很大的数!肯定高手一眼就看出来问题所在了!
是因为:memcpy函数的拷贝是基于字节的,上面我拷贝的个数是2,所以只有温度能正常,湿度根本就没拷贝过去。
正确的方法是4个字节:memcpy( pBuffer , SHT_Data ,4);//output
3、GPIO的说明
这里得再次鄙视下友善之臂的技服!GPIO我原来使用的是2440默认两个引脚(默认的接了EEPROM和Camera!!,能对才怪!),最后查找到SPI0的空余引脚才搞定。
代码可以参照:http://bbs.csdn.net/topics/390278816?page=1
分享到:
相关推荐
mini2440 IIC的裸机程序,测试通过
IIC总线时序详解
在mini2440下的IIC驱动源代码,非常实用,二次开发中会用到的。
mini2440 LINUX IIC控制超声波传感器
有调试过,百分之百OK。 工程内有readme.txt说明,便于理解 开发板:mini2440 仿真器:H-JTAG CPU:S3C2440 欢迎访问本人博客, http://blog.csdn.net/wfq0624
基于mini2440的IIC读写EEPROM AT24C08A的裸机代码,包含中断模式和轮询模式 供大家学习。
试验通用io口模拟iic时序通信,对于没有iic接口后iic接口少的设备很实用
iic时序程序,详细介绍iic时序与案例程序
该程序用C语言写成,通过51单片机模拟IIC时序,向EEPROM 24c04中读写数据,该程序经过检验
2440 实验5 IIC实验.rar!!!!!!!!!!
IIC时序详解,内容比较详细,可以进行学习参考,值得下载。
基于S3C2440的IIC接口操作,首先将数据写到AT24C02中,然后读出所写入的数据并通过串口发送到PC上。
S3C2440下的IIC开发代码,是比较初级的东东,比较适合新手。
用52单片机对IIC时序进行软件模拟,可以很方便的移植到没有IIC硬件接口的单片机中使用
IIC工作时序总结.pdf
该软件为基于s3c2440的IIC 测试程序
这篇文章详细讲解了I2C的时序、引脚定义等相关的内容,比较详细易懂
mini2440 ADS1.2 软件模拟IIC
IIC时序程序[收集].pdf
S3C2440下的IIC测试源码,ADS下的源码!对需要了解IIC工作原理的兄弟很有帮助!