主题:EM9287利用SPI总线配置SSD1322的OLED屏 共有55105人关注过本帖 |
---|
![]() MS |
1楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
EM9287利用SPI总线配置SSD1322的OLED屏 ![]() 当利用EM9287的SPI总线配置SSD1322时,wince调用上层API读写SSD1322时,循环1万多次读写发现数据传输速度过慢,从而导致OLED屏刷屏过慢(SPI总线需要对SSD1322进行1万多次读写RAM才能刷屏)。
请问:是不是因为当上层应用程序调用WINCE里的SPI驱动的读写函数速度过慢导致的,SPI总线虽然可达10MHz频率,但事实上调用API函数之后的读写速度大大降低,远远没有10MHz的速率。 请问:是否可以改进SPI的读写驱动,提高读写速率? |
单帖管理 | 引用 | 回复 ![]() |
客人 |
2楼 |
![]() |
![]()
EM9287的SPI最高可以20Mbps的波特率进行数据传输,且可以实验多字节数据DMA传输,所以按理不应该慢。请试试DMA方式通讯
可以参考这个链接 http://www.emtronix.com/case/case2014673.html 注:该方法是WinCE6.0系统上有效,不适用与linux系统,请确认你的系统是否是CE,如果是,则可以参考 |
单帖管理 | 引用 | 回复 ![]() |
x10 |
3楼 |
![]() |
![]()
应当用DeviceIoControl的多数据结块的tranfer方式,效率就很高。在Linux版本肯定是支持这个模式的,CE6我要查一下,如果没有支持,我们会尽快加上。请留一个能的邮箱,以便我们发新内核给你,谢谢!
|
单帖管理 | 引用 | 回复 ![]() |
![]() MS |
4楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]() |
单帖管理 | 引用 | 回复 ![]() |
zxw |
5楼 |
![]() |
![]()
你好!
CE6系统支持这种读写方式,给你的网页连接中也说过该方式的使用方法。 在光盘中的EM9280_SPIDemo例子程序中也有代码可以参考 你的邮件中,我把SPI应用方法的文章也再次发给你了,可以先看看。具体那里不清楚,可以提的更明确一些更好! 混合型SPI操作需要用到以下数据结构:
pTxBuff:SPI输出数据BUFF指针
注意,EM9280的SPI接口仅支持半双工操作,因此在上述结构中,只能有一个buffer指针为有效指针,另一个必须为NULL。dwBufLength的定义与单向读写的定义一致。具体的传输是通过DeviceIoControl来实现的,举例说明,本例首先进行发送1个字节(8-bit SPI),然后接收2个字节。
SPITransfer Trans[2];
在上述调用中需要注意的是,DeviceIoControl()输入参数中的buffer长度必须是数据结构SPITransfer大小的整倍数,否则将被视作无效参数。 |
单帖管理 | 引用 | 回复 ![]() |