一、准备工作
这次准备用天嵌的板子点个oled屏幕,spi总线的,然而看原理图,可用的io没有。
所以得先释放资源,把led的两个io用来驱动res,dc脚,spi用的是板子上的spi1。
SPI1_MOSI接oled的data
SPI1_SCLK接oled的sclk
现在释放驱动:
Device Drivers --->
[ ] LED Support ----
然后保存,退出。从新编译,把zImage更新到板子上。
用下面指令测试你的IO是否释放;
如果在目录下成功的导出一个gpio130文件夹就说明成功了。
现在板子的实验环境是:文件系统是通过nfs挂载linux服务器上的文件系统,具体操作看我的nfs挂载贴。
二、开始写oled驱动;
本来打算简简单单写,但是写着写着发现要写的代码太多了。于是决定写个库,参考了友善的库,真是非常感谢学到了很多。
下面是库的结构:
还学了一波makefile真的很得劲,欢迎小伙伴一起开源一起学习。
下面是oled的主程序:
这次准备用天嵌的板子点个oled屏幕,spi总线的,然而看原理图,可用的io没有。
所以得先释放资源,把led的两个io用来驱动res,dc脚,spi用的是板子上的spi1。
SPI1_MOSI接oled的data
SPI1_SCLK接oled的sclk
现在释放驱动:
make menuconfig
[ ] LED Support ----
然后保存,退出。从新编译,把zImage更新到板子上。
用下面指令测试你的IO是否释放;
echo 130 > /sys/class/gpio/export
现在板子的实验环境是:文件系统是通过nfs挂载linux服务器上的文件系统,具体操作看我的nfs挂载贴。
二、开始写oled驱动;
本来打算简简单单写,但是写着写着发现要写的代码太多了。于是决定写个库,参考了友善的库,真是非常感谢学到了很多。
下面是库的结构:
还学了一波makefile真的很得劲,欢迎小伙伴一起开源一起学习。
下面是oled的主程序:
int main(int argc, char** argv)
{
int dc_pin = 0, res_pin = 0;
int dev_fd = 0;
/* imx系列板子io_port要减1 */
if ((res_pin = convert_gpio_pin("GPIO4_02")) == -1 || (dc_pin = convert_gpio_pin("GPIO4_07")) == -1) {
printf("convert_gpio_pin error\n");
return -1;
} else { <