我使用的是TFT液晶显示屏(ILI9163c - 160*128)。它与、、、AR9331、模块和spi连接。AR9331与OpenWRT linux发行版一起运行。所以,我驾驶我的液晶显示器与spidev0.1 0.1。当填充屏幕或在LCD上写任何字符串时,打印时间太长了。那么,我怎样才能获得足够的打印速度。
谢谢。
这是我用spi引脚用spidev写数据的函数.
void spi_transactor(unsigned char *write_data, int mode,int size)
{
int ret;
struct spi_ioc_transfer xfer[4];
unsigned char *init_reg;
init_reg = (unsigned char*) malloc(size);
memcpy(init_reg,write_data,size);
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;
xfer[0].rx_buf = 0; //( unsigned long ) &buf_rx[0];
xfer[0].len = size; //wlength + rlength;
xfer[0].delay_usecs = 0;
xfer[0].speed_hz = speedx; // 8MHZ
//xfer[0].speed_hz = 160000000; // 40MHZ
ret = ioctl(spi_fd, SPI_IOC_MESSAGE(1), &xfer);
gpio_set_value(_rs, 1);
}发布于 2017-11-09 10:08:23
这里的主要性能问题是,每次调用函数时,都要对要发送到堆上的数据进行硬拷贝。您每次都会从头开始设置通信参数,尽管它们总是相同的。更糟糕的是,这个函数有一个巨大的错误:它泄漏内存,好像没有明天一样。
硬拷贝并不是真正必要的,除非SPI通信需要太多的时间让程序坐下来忙碌--等待它完成(很有可能)。在这种情况下,你能做的是:
https://stackoverflow.com/questions/47198053
复制相似问题