查看: 173|回复: 5
收起左侧

GD32F303 读LCD寄存器

[复制链接]
     

1

主题

3

帖子

19

积分

实习生

 楼主| 发表于 2017-8-2 17:51 | 显示全部楼层 |返回版面|阅读模式


读LCD控制器的设备信息
  1.     /* read the LCD controller device code:(0x8989) */
  2.     device_code = lcd_register_read(0x0000);
复制代码
具体实现如下:
  1. uint16_t lcd_register_read(uint8_t register_id)
  2. {
  3.     uint16_t data;
  4.     *(__IO uint16_t *) (BANK0_LCD_C)= register_id;
  5.     data = *(__IO uint16_t *) (BANK0_LCD_D);
  6.     return  data;
  7. }
复制代码
其中的定义如下:
  1. #define BANK0_LCD_D         ((uint32_t)0x61000000)    /*!< LCD data address */
  2. #define BANK0_LCD_C         ((uint32_t)0x60000000)    /*!< LCD register address */
复制代码


我就没明白 lcd_register_read() 到底是怎么实现读寄存器的。
首先是向地址 0x60000000 写入了一个寄存器X的地址,然后从 LCD data address 寄存器返回寄存器X的值。
这个过程是由LCD控制器完成查询的?

而GD也也没有给 LCD的 datasheet。

74

主题

3835

帖子

1万

积分

资深工程师

发表于 2017-8-15 19:08 | 显示全部楼层 |返回版面
这个是通过哪种数据总线实现的?
     

1

主题

3

帖子

19

积分

实习生

 楼主| 发表于 2017-8-18 13:13 | 显示全部楼层 |返回版面
shenmu2012 发表于 2017-8-15 19:08
这个是通过哪种数据总线实现的?

文件 gd32f30x.h 中定义如下:
/* peripheral memory map */
#define APB1_BUS_BASE         ((uint32_t)0x40000000U)        /*!< apb1 base address                */
#define APB2_BUS_BASE         ((uint32_t)0x40010000U)        /*!< apb2 base address                */
#define AHB1_BUS_BASE         ((uint32_t)0x40018000U)        /*!< ahb1 base address                */
#define AHB3_BUS_BASE         ((uint32_t)0x60000000U)        /*!< ahb3 base address                */

那应该是 ahb3 地址空间。

0

主题

41

帖子

123

积分

中级技术员

发表于 2017-8-18 16:48 | 显示全部楼层 |返回版面
303并不是支持LCD,而是跟103一样通过外挂存储器控制器来实现驱动LCD的,它把LCD当做一个存储器来操作的。
     

1

主题

3

帖子

19

积分

实习生

 楼主| 发表于 2017-8-23 09:34 | 显示全部楼层 |返回版面
wzw2134 发表于 2017-8-18 16:48
303并不是支持LCD,而是跟103一样通过外挂存储器控制器来实现驱动LCD的,它把LCD当做一个存储器来操作的。 ...

多谢,的确是按照外部存储器方式来访问LCD的。

exmc_lcd_init() ------> exmc_norsram_init(&lcd_init_struct);

78

主题

3546

帖子

1万

积分

资深工程师

发表于 2017-8-23 20:54 | 显示全部楼层 |返回版面
[鑫森淼焱垚] 发表于 2017-8-18 13:13
文件 gd32f30x.h 中定义如下:
/* peripheral memory map */
#define APB1_BUS_BASE         ((uint32_t)0 ...

看了下,,这个需要看下该芯片的总线控制分布图的,,一般来说LCD的话,是APB2
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

分享 快速回复 返回顶部 返回列表