沒啥新的東西 就是GPIO操作
3.key
可以設置中斷方式的來實現GPIO操作
wiringPiISR(gpio_num, rise/fall_edge, isr_server_addr)
4. gpio load i2c時候出現問題
gpio: Unable to load/unload modules as this Pi has the device tree enabled.
You need to run the raspi-config program (as root) and select the
modules (SPI or I2C) that you wish to load/unload there and reboot.
There is more information here:
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=97314
1. lsmod 查看i2c i2s spi都沒有在里面,網上說在/edc/modprobe.d的黑名單里面取消注釋,依次打開所有黑名單,發現沒有對應的
2. 打開/boot/config.txt 里面的發現這三個模塊都被注釋掉了,於是取消注釋, reboot重啟 lsmod就發現內核已經裝載着三個模塊了。
spi_bcm2835 6678 0
bcm2835_gpiomem 2976 0
i2c_bcm2708 4834 0
但是依然沒法使用?
3. 安裝 i2c-tools,可以使用i2cdetect命令了,但是依然提示找不到i2c設備
4.進入到這個文件夾下面 加兩句
5. bmp180
vi /etc/modules
添加
i2c-bcm2708
i2c-dev
reboot以后就啟動了 i2c內核驅動了!
依然是用的i2c模塊,只是數據讀取格式不同
6.串口
raspi-config
配置里面找到串口打開
apt-get install minicom
minicom -D /dev/ttyS0
安裝minicom,並打開
-b 設置波特率 -D 設置端口
樹莓派3b要選擇 ttyS0 而不是 ttyAMA0
7.ds18b20
網上大概了解了一下設備樹的概念,但是感覺還是比較模糊。就像一種可配置的編程方式?
就先依樣畫葫蘆吧 在/boot/config.txt 里面加上
dtoverlay=w1-gpio-pullup,gpioin=4
sudo modprobe w1_gpio
sudo modprobe w1_therm
執行這兩句,但是這樣每次使用都要加載 ,我就把這兩句放到 /etc/rc.local里面
模塊加載了 依然沒有?
原來是config.txt里面寫的pull,少了一個up,細心啊!
現在知道 設備樹是一個好東西!!硬件外設細微的改動就不需要重新修改內核源文件然后再編譯運行了,修改一下設備樹的配置就行了!!!這有點像USB協議里面報告描述符,按照事先設定好的協議方法寫一堆描述符,發送給主機之后,主機去按照協議解析這堆描述符,所以可以在規則范圍內隨意DIY USB的各種功能。
注意:DS18B20官方提供的程序有問題 ,注意在strcat(path, rom);前面少了"\",不是一個完整的路徑。所以后面就會open error。
8.ds3231
dtoverlay=i2c-rtc,ds3231
加載了RTC設備作為系統時鍾以后,
i2cdetect –y 1
就不能再繼續被編程時使用了,可以看到此時的RTC址已經變成了UU