收录日期:2021/01/23 18:42:35 时间:2016/07/12 06:44:37 标签:嵌入开发(WinCE)
小弟第一次接触嵌入式系统,将自己的问题详细描述一下,以便各位大哥大姐多多帮忙!
我用的硬件平台是三星2440,在这套平台上嵌入了Windows CE操作系统。2440内部带有两个SPI口同外部通信,我们要做的是通过SPI接口用一块单片机给2440发送数据,同时检测到这个中断信号,在CE下调用一个应用程序。
我以前没做过VC的开发,但是比较熟悉C语言、懂一些C++的内容。完成上面的工作,也就是识别SPI中断,调用中断应用程序,需要从哪里入手,应该查阅哪方面的资料???我看到网上的步骤都是先写底层的驱动程序ISR,然后再写流驱动IST,进而完成SPI的应用,真的必须这么做么??可不可以直接类似在非操作系统下,通过读写SPI寄存器来完成。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~谢谢 THANK YOU VERY MUCH!
wince 系统不让应用程序直接访问硬件的。
你就乖乖的做个spi流接口驱动,然后应用层用createfile,readfile,writefile实现。
至于流接口驱动怎么做,建议你买本书或者在网上搜索相关资料。
goodluck。。
LS正解
“2440内部带有两个SPI口同外部通信,我们要做的是通过SPI接口用一块单片机给2440发送数据,同时检测到这个中断信号,在CE下调用一个应用程序。 


----》意思是不是捕捉到中断,就在WinCE下调用一个应用程序.
和单片机通信我做过,首先要看是谁做主机,谁做从机。其次,丛机接收数据需要主机触发。
做个流驱动就可以了。

LS说 "和单片机通信我做过,首先要看是谁做主机,谁做从机。其次,丛机接收数据需要主机触发。 
做个流驱动就可以了。"

----> 这种驱动我没搞过,有一些疑问,单片机是主或从,单片机能认识流驱动吗?
SPI一般有四根线,MISO,MOSI,SCLK,/SS.单片机和流驱动没关系,流驱动是wince应用程序和Wince SPI电路的通信的。
建议你先看下SPI资料。再看下wince SPI驱动的例子,网上有。
2 楼正解
引用 1 楼 ulovexd 的回复:
wince 系统不让应用程序直接访问硬件的。 
你就乖乖的做个spi流接口驱动,然后应用层用createfile,readfile,writefile实现。 
至于流接口驱动怎么做,建议你买本书或者在网上搜索相关资料。 
goodluck。。


不一定,wince5.0是可以直接用应用程序访问 的。因为应用和驱动都在用户空间。
wince6.0 就不行了。驱动放到内核空间了。
补充下, WinCE 5.0 只是不能直接访问硬件中断。所以要是有用到硬件中断的程序就最好写成驱动,应用程序再调用了。
引用 9 楼 xajhuang 的回复:
补充下, WinCE 5.0 只是不能直接访问硬件中断。所以要是有用到硬件中断的程序就最好写成驱动,应用程序再调用了。


我只用来访问寄存器。中断没有试过,学习一下。
想到个问题,是不是SPI通信时,每接收一字节数据就要产生一次中断,如果是这样的话,WINCE操作系统调度
的过来吗?还是接收一个数据包只在头上产生一次中断,然后再通过查询方式把数据读完整?如果是这样的
话,2440的中断模式该怎么设置呢?好像2440的没有缓冲区的,每接收一个数据就产生一个接收中断事件。
2440的没有多字节的缓冲区,像CAN总线一样,好几十字节的接收缓冲区满了才产生中断!
引用 12 楼 wjf_zjut 的回复:
2440的没有多字节的缓冲区,像CAN总线一样,好几十字节的接收缓冲区满了才产生中断!


2440的SPI没有多字节的缓冲区,像CAN总线一样,好几十字节的接收缓冲区满了才产生中断!
让俺长见识啦,呵呵
引用 13 楼 wjf_zjut 的回复:
引用 12 楼 wjf_zjut 的回复:
2440的没有多字节的缓冲区,像CAN总线一样,好几十字节的接收缓冲区满了才产生中断! 
 

2440的SPI没有多字节的缓冲区,像CAN总线一样,好几十字节的接收缓冲区满了才产生中断!

请问如果是这样,那么接受数据这部分驱动应该怎么写呢?还是用中断方式吗?十分感谢,我的驱动写的差不多了,就接受数据这块还不是很懂,请知道的兄弟姐妹们帮帮忙。。
楼主好,我是第一次接触这个东西,还是一头雾水,不知道从哪开始,麻烦能不能把你程序发来参考一下,感激不尽,邮箱zhao_0117@163.com
引用 16 楼 wyymr 的回复:
楼主好,我是第一次接触这个东西,还是一头雾水,不知道从哪开始,麻烦能不能把你程序发来参考一下,感激不尽,邮箱zhao_0117@163.com
鄙视一下直接要源码的Person,呵呵…

请教:rs.recordcount 返回值为-1 分享:Uedit32与SQLPlus结合使用技巧....... 各位大哥帮忙:http://www.csdn.net/expert/topic/768/768773.xml?temp=.1318628 关于文件reset,writeln的,不好意思没分了(求救)!!! 请教tapstrip的详细用法 关于使用 NMUDP 的问题 这段代码我不会优化?(可能对你来讲很简单) 我最新安装了一个Window XP﹐可是它的文件未够太多了吧﹐我想删除一些不必要的文件﹐请问我该怎样做﹖ 有谁用过imail6.0,为什么经常会收不到邮件,还有哪能下到有注册码的高版本imail 请问这句SQL对不对 ERP高手请指点一下,业务分析问题 sqlanywhere中能不能写存储过程? vb如何实现使一个form始终显示在最上层,如vb里的【查询】对话框那样 在VB6中如何使用通讯控件的编程 redhat72-php AnsiString 2 Char,How to? 有谁会?: 旧话重提:在nt/2000下怎样获取硬盘的物理序列号(如果用到了组件或dll需要有代码)up有分 如何把sql server的数据库中的数据导到一Execel文件中? 如何使用inotes带的附件上载控件,高手请进 rpm的升级过程中出现的问题 字符串中的某个字符做URL 为什么会这样?太不公平了!!! linux下的php路径执行问题 请教Automation和COM的区别 侯捷专栏:当技术书籍遇上传统编辑(转) 各位高手,看世界杯前先帮帮忙,是一个ASP生成报表的问题? 关于CB6中LocalConnection的问题 请问怎样动态创建一个SQL SERVER数据库? C++ BUILDER VS VC++ ,FACING DX?