我使用的是TFT屏幕(ILI9163c),它与AR9331模块连接,与spi引脚连接。AR9331运行在OpenWRT linux发行版中。因此,我使用我的C应用程序代码使用spidev0.1 0.1驱动我的LCD。
AR9331板使用相同的SPI引脚驱动闪存,这是从内核.处理的。
我有独立的液晶芯片选择引脚为LCD提供适当的数据保证,使LCD从代码中又低又高,但有时LCD屏幕在flash上传输数据(使用其他脚本或应用程序)时仍会受到垃圾的影响,而LCD打印则是从我的代码开始。
我有控制液晶芯片从代码中选择,但不是闪光灯。因此,在这种情况下,当flash和LCD的操作并行时,我应该做些什么来处理这种情况。
这是我使用SPIdev0.1在LCD上发送数据的函数代码。
void spi_transactor(unsigned int wlength,
unsigned int rlength,
const unsigned char write_data,
int mode)
{
int ret;
struct spi_ioc_transfer xfer[4];
unsigned char init_reg[1];
init_reg[0] = write_data;
if (mode)
{
gpio_set_value(_rs, 1); // DATA
}
else
{
gpio_set_value(_rs, 0); // COMMAND
}
memset(xfer, 0, sizeof xfer);
xfer[0].bits_per_word = 8;
xfer[0].tx_buf = (unsigned long) &init_reg[0];
xfer[0].rx_buf = 0; //( unsigned long ) &buf_rx[0];
xfer[0].len = wlength + rlength;
xfer[0].delay_usecs = 0;
xfer[0].speed_hz = speedx;
//xfer[0].speed_hz = 40000000; // 40MHZ
gpio_set_value(_CS, 0); // SET ChipSELECT LOW
ret = ioctl(spi_fd, SPI_IOC_MESSAGE(1), &xfer);
gpio_set_value(_CS, 1); // SET ChipSELECT HIGH
(void) ret;
//DEBUG_PRINT("%d\n",ret);
//if (ret <= 0) ;
//DEBUG_PRINT("ERROR: %s\n", strerror(errno));
}我认为如果我们可以在内核中将我的gpio配置为SPIDV0.1驱动程序中的Chipselect,这是可能的.但是我如何在内核中将gpio配置为芯片组呢?
发布于 2017-11-30 06:07:34
我发现了一些类似的东西,这里.
刚刚从spi驱动程序中注册了通用GPIO-pin作为液晶显示的CS1,最后我解决了我的问题.
谢谢您@A.K @ Thank 694733
https://stackoverflow.com/questions/47391063
复制相似问题