bluebanboom
获得 2 次赞
帮助过38人
串口是比较常见的通信接口,在linux下的话,也是可以直接通过读写文件的方式使用串口通信。在之前的spi使用也是通过读写文件的方式的,在linux下文件真的是太万能了。根据nanopi k1 plus的wiki说明,串口对应的文件是/dev/ttysx。 因为之前在nanopi k1 plus搭建了stm8的开发环境,所以这里用stm8和nanopi k1 plus进行串口通信。串口通信也是需要设置一些参数的,在之前的spi使用中,用到了ioctl函数来设置spi相关的参数,这次要设置串口相关的参数就需要使用其他的函数了。 其中主要是对struct termios进行设置。
stm8的一些最小系统版很便宜,一直想学习一下stm8的开发,今天又找出之前买的核心板了,在windows下搭建开发环境的时候发现很麻烦,好用的都是收费软件。就去搜了一下找到了开源免费的开发环境——sdcc,配合stm8flash和stlink就可以使用淘宝上买的那种stlink v2烧写程序了。因为都是开源的,所以完全可以自己在nanopi k1 plus下编译。 0.安装依赖 sdcc的依赖比较多,而且之前我也安装了一些工具,所以这里列举的依赖可能会有些不全。
这一篇本来应该是在上星期完成的,但是中间出了点问题。本以为在玩了这多spi后,应该一帆风顺的,然而就在我尝试在nanopi k1 plus下驱动最自信的nokia5110时,遇到了一点问题。 在上两篇里已经对linux下的spi比较熟悉了,所以作为结束的第三篇想要驱动nokia5110,但是并没有成功。我还以为是屏幕坏了,所以又在淘宝上买了两片,结果还是不行。无奈之下又在arduino下测试屏幕,发现这几个nokia5110都没有问题,那么肯定就是spi驱动的问题了。 这个时候,没有逻辑分析仪基本是无解了,庆幸的是我之前在淘宝买了个20多块的usb逻辑分析仪,想不到这次居然用它解决了问题。 问题到底在哪呢?其实我也没有最终找到,只是通过逻辑分析仪发现,使用wiringpispidatarw的时候,时钟会出现异常,很奇怪。 来看一下逻辑分析仪中的数据
在上一篇试用里直接用wringnp来驱动max7219,之前还提到了操作“/dev/spidev0.x”来使用spi,这一篇里我们丢掉wringnp,纯文件操作来驱动max7219点阵。 因为要驱动max7219不光要用spi,还需要使用gpio操作cs,幸好gpio也是可以通过读写文件来操作。以之前使用的7号gpio为例,这个在linux下对应于203,关于引脚的对应关系可以通过gpio readall来查看。如果希望通过文件来操作203,首先通过如下命令导出,
本帖最后由 bluebanboom 于 2018-7-10 16:31 编辑 用了这么多的派,还没有好好的用一下原生的linux驱动。在linux下多数外设都是可以通过read和write的方式进行交互,比如可以通过读写/sys/class/gpio/gpioxxx来控制gpio,同样的spi也是可以直接通过读写/dev/spidevx.x来直接操作。nano pi k1 plus的friendlycore已经默认启用了spi0,也就是可以直接使用/dev/spidev0.0。 使用spi协议的模块不少,我手上有一个max7219点阵led,之前已经把它的驱动原理完全搞明白了,用它来探索nanopi k1 plus的spi最合适不过了。 关于max7219的详细说明可以参考之前的
本帖最后由 bluebanboom 于 2017-10-14 19:36 编辑 诺基亚5110的拆机屏幕非常便宜,而且驱动起来并不复杂,相对于lcd1602来说可以显示更多的信息,利用esp32的wi-fi或者蓝牙可以将诺基亚5110充分利用起来,作为一个中央设备来显示一些信息。 关于5110屏幕的驱动实际有很多,但是如果仅仅拿来就用的话,恐怕会不尽如人意。特别是我已经在androidthings上驱动了5110,详细的原理理解的七七八八,具体可以参考这篇帖子
有了max7219点阵的驱动经验之后,再来学习nokia5110的驱动就得心应手了,两者同样都是串行驱动,不同的是max7219每一组16位的数据相当于一条指令,而nokia5110数据和指令是分开的,通过dc引脚来区分。max7219是8x8的点阵nokia5110是48x84,可以粗暴的理解为多个max7219点阵的组合,实际上max7219点阵是支持多个点阵组合的。先来张datasheet中的图形象的了解一下nokia5110。
之前用max7219点阵做过跑马灯显示,但其实对max7219的显示原理并不清楚,大概知道是spi的协议。这次通过androidthings来彻底搞明白怎么显示的。首先看一下max7219点阵的原理图: