[技术问题解答] 飞思卡尔 K60 ILI9325驱动(已解决)

[复制链接]
1996|10
 楼主| assange 发表于 2014-8-29 21:32 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_A 于 2014-9-15 11:51 编辑

程序运行, 得到的DeviceCode为6783         求有经验的给点建议

  1. int main(void)
  2. {
  3.   DelayInit();
  4.   LCD_Init();
  5.   while(1);
  6. }
  1. #include "ili9325.h"
  2. #include "gpio.h"
  3. uint16_t DeviceCode;         

  4. //PTB0~8 DB0~8 **** PTA8~15 DB8~15
  5. void DataToIO(uint16_t val)
  6. {
  7. uint16_t dat=0;
  8. dat = GPIO_ReadPort(HW_GPIOB);  // DBL
  9. dat = (dat&0xFF00) | (val&0x00FF);
  10. GPIO_WritePort(HW_GPIOB, dat);

  11. dat = GPIO_ReadPort(HW_GPIOA);  // DBH  
  12. dat = (dat&0xFF00) | ((val>>8)&0x00FF);
  13. GPIO_WritePort(HW_GPIOA, dat);        
  14. }
  15. void LCD_WR_DATA(uint16_t data)
  16. {  
  17.         LCD_RS_SET;
  18.         LCD_CS_CLR;
  19.         DataToIO(data);
  20.         LCD_WR_CLR;
  21.         LCD_WR_SET;
  22.         LCD_CS_SET;
  23. }         

  24. void LCD_WR_REG(uint16_t data)  
  25. {
  26.         LCD_RS_CLR;
  27.         LCD_CS_CLR;
  28.         DataToIO(data);
  29.         LCD_WR_CLR;
  30.         LCD_WR_SET;
  31.         LCD_CS_SET;
  32. }

  33. void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue)
  34. {        
  35.         LCD_WR_REG(LCD_Reg);  
  36.         LCD_WR_DATA(LCD_RegValue);                             
  37. }

  38. uint16_t LCD_ReadReg(uint16_t LCD_Reg)
  39. {                                                                                   
  40.         uint16_t t,i,datH,datL;
  41.         LCD_WR_REG(LCD_Reg);  
  42.         for(i=0;i<7;i++)
  43.         {
  44.           GPIO_QuickInit(HW_GPIOB,i,kGPIO_Mode_IPU);
  45.         }
  46.         for(i=8;i<16;i++)
  47.         {
  48.           GPIO_QuickInit(HW_GPIOA,i,kGPIO_Mode_IPU);
  49.         }
  50.         PTA->PDOR=0XFFFF;
  51.         PTB->PDOR=0XFFFF;
  52.         
  53.         LCD_RS_SET;
  54.         LCD_CS_CLR;
  55.         LCD_RD_CLR;
  56.         DelayUs(5);
  57.         
  58.         datH = PTA->PDIR;  /**< Port Data Input Register, offset: 0x10 */
  59.         datL = PTB->PDIR;  /**< Port Data Input Register, offset: 0x10 */
  60.         
  61.         LCD_CS_SET;
  62.         for(i=0;i<7;i++)
  63.         {
  64.                 GPIO_QuickInit(HW_GPIOB,i,kGPIO_Mode_OPP);
  65.         }
  66.         for(i=8;i<16;i++)
  67.         {
  68.                 GPIO_QuickInit(HW_GPIOA,i,kGPIO_Mode_OPP);
  69.         }
  70.         DataToIO(0XFFFF);
  71.         t = ((datH<<8)&0xFF00) | (datL&0x00FF);
  72.         return t;  
  73. }  

  74. void LCD_Init(void)
  75. {
  76.         uint8_t i;                                                                                   
  77.         for(i=4;i<10;i++)
  78.         {
  79.                 GPIO_QuickInit(HW_GPIOD,i,kGPIO_Mode_OPP);
  80.         }

  81.         LCD_CS_SET;
  82.         LCD_RD_SET;
  83.         LCD_WR_SET;
  84.         DelayMs(50); // delay 50 ms
  85.         LCD_WriteReg(0x0000,0x0001);
  86.         DelayMs(50); // delay 50 ms
  87.         LCD_RD_SET;
  88.         LCD_WR_SET;
  89.         
  90.         DeviceCode = LCD_ReadReg(0x0000);
  91.         DelayMs(20);

  92.         LCD_LED_SET;
  93. }

  1. #define        LCD_LED_SET  PDout(9)=1
  2. #define        LCD_LED_CLR         PDout(9)=0

  3. #define        LCD_CS_SET  PDout(8)=1   
  4. #define        LCD_RS_SET        PDout(5)=1     
  5. #define        LCD_WR_SET        PDout(6)=1   
  6. #define        LCD_RD_SET        PDout(7)=1     
  7. #define        LCD_RST_SET        PDout(4)=1   

  8. #define        LCD_CS_CLR  PDout(8)=0     
  9. #define        LCD_RS_CLR        PDout(5)=0      
  10. #define        LCD_WR_CLR        PDout(6)=0     
  11. #define        LCD_RD_CLR        PDout(7)=0
  12. #define        LCD_RST_CLR        PDout(4)=0

  13. void DataToIO(uint16_t val);
  14. void LCD_Init(void);
  15. void LCD_WR_DATA(uint16_t data);
  16. void LCD_WR_REG(uint16_t data);
  17. void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue);
  18. uint16_t LCD_ReadReg(uint16_t LCD_Reg);




FSL_TICS_Robin 发表于 2014-9-1 11:07 | 显示全部楼层
楼主你好
请问你现在芯片与ILI9325之前通信波形有用逻辑分析仪抓取是否正确呢?

 楼主| assange 发表于 2014-9-1 17:16 | 显示全部楼层
FSL_TICS_Robin 发表于 2014-9-1 11:07
楼主你好
请问你现在芯片与ILI9325之前通信波形有用逻辑分析仪抓取是否正确呢?

我只是个学生,没有逻辑分析仪这样高级的装备:(
jd972594 发表于 2014-9-1 17:33 | 显示全部楼层
;P用过30+元逻辑分析仪的飘过,淘宝上到处都是。
调试SPI、IIC这种总线协议必须哒
FSL_TICS_Robin 发表于 2014-9-2 09:18 | 显示全部楼层
那请问你的SPI程序之前有正常通信过吗?
 楼主| assange 发表于 2014-9-2 15:45 | 显示全部楼层
jd972594 发表于 2014-9-1 17:33
用过30+元逻辑分析仪的飘过,淘宝上到处都是。
调试SPI、IIC这种总线协议必须哒 ...

还有这么便宜的....
 楼主| assange 发表于 2014-9-2 15:46 | 显示全部楼层
FSL_TICS_Robin 发表于 2014-9-2 09:18
那请问你的SPI程序之前有正常通信过吗?

这个我貌似是虚拟的...没有用硬件上的
FSL_TICS_Robin 发表于 2014-9-2 16:02 | 显示全部楼层
那学校有示波器不? 调试时看一下波形是否满足你要的时序呢
 楼主| assange 发表于 2014-9-2 17:53 | 显示全部楼层
FSL_TICS_Robin 发表于 2014-9-2 16:02
那学校有示波器不? 调试时看一下波形是否满足你要的时序呢

哦?我去问问,这些东西貌似不常见,示波器比较多;P
jd972594 发表于 2014-9-4 09:03 | 显示全部楼层
assange 发表于 2014-9-2 15:45
还有这么便宜的....

功能稍微弱了一点,但是对于小项目而言足够了。
以前i2c我也用示波器看波形,芯片调试收发一次I2c数据看一下波形对就ok啦。
不对就再去找到底哪的问题。
 楼主| assange 发表于 2014-9-4 09:17 | 显示全部楼层
jd972594 发表于 2014-9-4 09:03
功能稍微弱了一点,但是对于小项目而言足够了。
以前i2c我也用示波器看波形,芯片调试收发一次I2c数据看 ...

嗯,好哒,谢谢,考虑入手一个看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部