arm11 wince6.0 EBOOT中初始化OLED的问题....

当我遇上-你 2010-09-13 01:00:12
在进入EBOOT的主函数时就通过端口模拟SPI来配置oled,时序要求在250ns,端口通过OALPATOVA函数映射了的,用示波器看端口数据在1.8V左右画正弦波,幅度为0.5V。理论应该是方波,波长250ns,幅度为3.3V,应该是SPI配置不成功导致屏无显示,在ARM7(LPC2478)上用的是快速端口模式,没开MMU,我在想是不是通过MMU后端口速度变慢了,应该怎么来模拟SPI的时序呢?
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
当我遇上-你 2010-09-14
  • 打赏
  • 举报
回复
RGB接口的,不过初始化要用SPI来配置,才能用现在改为在STEPLDR目录中端口模拟SPI,但是用示波器看数据,时序没有对,
unsigned int j,i;
unsigned short sdata,k;
rGPFCON = (rGPFCON & ~(0x3<<28))|(0x1);

rGPPPUD &= (~(0xfffffff<<0));

rGPPCON = (rGPPCON &~(3<<2)) | (1<<2); // GPP1 : OLED_SCL
rGPPCON = (rGPPCON &~(3<<16))| (1<<16); // GPP8 : OLED_NCS
rGPPCON = (rGPPCON &~(3<<24))| (1<<24); //GPP12 : OLED_SDA
rGPPDAT = (rGPPDAT &~(0x3fff<<0))| (0x3fff<<0);
for(j=0;j<8;j++)
{
sdata = OLEDINIT[j]; //OLEDINIT[j]初始化数组
rGPPDAT &=~(1<<8); //_NCS
for(i=0;i<16;i++)
{
rGPPDAT &=~(1<<1); //_SCL
if(sdata & 0x8000)
{
rGPPDAT |= (1<<12); //SDA
}
else
{
rGPPDAT &=~(1<<12); //SDA
}
delay250ns();
rGPPDAT |= (1 << 1); //_SCL
delay250ns();

sdata <<= 1;

}
delay250ns();
rGPPDAT |= (1 << 8); //_NCS
delay250ns();
delay250ns();
}
示波器采集的数据看,延时250nS没有用,延时我用的for循环,更改循环次数或者嵌套,都没效果,不知道怎么回事。
chinesedragon2010 2010-09-14
  • 打赏
  • 举报
回复
^_^,学习了。
丰满 2010-09-14
  • 打赏
  • 举报
回复
可以把相关的模拟代码贴出来看看一下!
当我遇上-你 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wswwxk 的回复:]
RGB接口的,不过初始化要用SPI来配置,才能用现在改为在STEPLDR目录中端口模拟SPI,但是用示波器看数据,时序没有对,
unsigned int j,i;
unsigned short sdata,k;
rGPFCON = (rGPFCON & ~(0x3<<28))|(0x1);

rGPPPUD &= (~(0xfffffff<<0));

rGPPC……
[/Quote]
谢谢,我的问题解决了,是硬件的问题,3.3V信号用成5V的了
chinesedragon2010 2010-09-14
  • 打赏
  • 举报
回复
先做个记号,明早看看,就看能否帮楼主发现错误啊,就当作学习了。
chinesedragon2010 2010-09-13
  • 打赏
  • 举报
回复
在进入EBOOT的主函数时就通过端口模拟SPI来配置oled
--->楼主是如何通过端口来模拟SPI的呢?可以把相关的模拟代码贴出来吗?楼主的OLED是SPI接口的吗?
当我遇上-你 2010-09-13
  • 打赏
  • 举报
回复
帮忙看看啊!
当我遇上-你 2010-09-13
  • 打赏
  • 举报
回复

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧