LCD rgb接口如何区分cmd和data?

LCD rgb接口如何区分cmd和data?

Justinyue Post at 2012-2-23 15:37:46
都是通过spi写入LCD module,都是8bit,如何区分是cmd还是data?
两个接口如下:
[CODE]
static void ILI9481ds_spi_write_reg_byte(u8 val)
{
 int i; 
 gpio_set_value(spi_cs, 0);
 gpio_set_value(spi_sclk, 0);  
 gpio_set_value(spi_sdi, 0);  //区别就在这里:写cmd时这里是拉低
 ndelay(100);
 gpio_set_value(spi_sclk, 1);  
 ndelay(100);
 for (i = 0; i < 8; i++)
 {
  /* #1: Drive the Data (High or Low) */
  gpio_set_value(spi_sclk, 0);
  if (val & bit_shift[i])
   gpio_set_value(spi_sdi, 1);
  else
   gpio_set_value(spi_sdi, 0);

  /* #2: Drive the Clk High and then Low */
  //ndelay(100);
  gpio_set_value(spi_sclk, 1);
  ndelay(100);
 } 
 /*FIXME: Idle state of sdi should be low */
 if (gpio_get_value(spi_sdi)) {
  //pr_info("%s(): warning spi_sdi may dismatch\\n", __func__);
  gpio_set_value(spi_sdi, 0);
 }  
 gpio_set_value(spi_cs, 1);
}

static void ILI9481ds_spi_write_data_byte(u8 val)
{
 int i;
    
 gpio_set_value(spi_cs, 0);  
 gpio_set_value(spi_sclk, 0);  
 gpio_set_value(spi_sdi, 1);//区别就在这里:写data时这里是拉高
 
 ndelay(100);
 gpio_set_value(spi_sclk, 1);
 ndelay(100);

 for (i = 0; i < 8; i++) {
  /* #1: Drive the Data (High or Low) */
  gpio_set_value(spi_sclk, 0);
  if (val & bit_shift[i])
   gpio_set_value(spi_sdi, 1);
  else
   gpio_set_value(spi_sdi, 0);

  /* #2: Drive the Clk High and then Low */
  //ndelay(100);
  gpio_set_value(spi_sclk, 1);
  ndelay(100);
 }

 /*FIXME: Idle state of sdi should be low */
 if (gpio_get_value(spi_sdi)) {
  //pr_info("%s(): warning spi_sdi may dismatch\\n", __func__);
  gpio_set_value(spi_sdi, 0);
 } 
 gpio_set_value(spi_cs, 1);
}
[/CODE]
从代码看是通过传输前是高低来区分的,
但这是有SPI协议规定的还是由lcd IC规定的?
在datasheet中看到以下内容,
- Parallel interface (D/CX): The signal for command or
parameter select.
Low: Command.
High: Parameter.
我的是RGB接口的,没有D/CX pin
我觉得是由IC决定,每次移植一个IC,都要查看如何区分cmd和data?


niuniu302 Post at 2012-2-28 17:26:12
对于4线SPI接口,命令和数据是通过D/CX来区分的;
对于3线SPI接口,没有D/CX管脚,这个信息包含在数据线上,每传一次包含 一位D/CX 和 8位数据。

int i; 
gpio_set_value(spi_cs, 0);
gpio_set_value(spi_sclk, 0);  
gpio_set_value(spi_sdi, 0);  //区别就在这里:写cmd时这里是拉低
ndelay(100);
gpio_set_value(spi_sclk, 1);  
ndelay(100);
for (i = 0; i < 8; i++)
{
  /* #1: Drive the Data (High or Low) */
  gpio_set_value(spi_sclk, 0);
  if (val & bit_shift[i])
   gpio_set_value(spi_sdi, 1);
  else
   gpio_set_value(spi_sdi, 0);

  /* #2: Drive the Clk High and then Low */
  //ndelay(100);
  gpio_set_value(spi_sclk, 1);
  ndelay(100);

这个就是先传一个 命令、数据识别位,再传8 bit data


RoyFeng Post at 2012-4-6 13:32:19
看LCDdriver的datasheet里面写的很清楚。RGB的initial code是通过SPI写入的,SPI写cmd和dat的时序都是有介绍的。

duai121812 Post at 2012-4-10 0:28:40
哪位高手知道RGB 屏 中间会有一条一条的 黑条纹是怎么回事啊。。。

bthl1y5c Post at 2013-1-26 23:23:41
楼主说的应该是 SPI 3-wire 模式。。3线9位  第一位用来表示写的是command还是parameter。0:command  1:parameter
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值