Hallo,
der Raspberry PI hat standardmäßig eine SPI Schnittstelle mit 2
chipselects. Laut diesem Beitrag ist es möglich per device tree möglich
weitere chipselects hinzuzufügen, die dann als eigenes devce unter
/dev/spidev0.x auftauchen:
https://www.raspberrypi.org/forums/viewtopic.php?t=98318&start=25#p821666
Ich habe es nach genau diesem Vorgehen, also
- DTS kompilieren
- dtbo nach /boot/overlays schieben
- overlay in /boot/config.txt aktiveren
geschafft dass die weiteren SPI devices auftauchen, nun also insgesamt 4
Stück. Bei Testen der einzelnen Schnittstellen ist mir aufgefallen dass
bei den ersten beiden ursprünglichen devices (spidev0.0 und spidev0.1)
nur jeweils in paar Impulse aus SCK kommen und die entsprechende CS
Leitung nicht gesetzt wird. Die beiden neuen devices funktionieren
dagegen wunderbar. Entfernt man den Overlay wieder, funktioneren die
beiden alten CS auch wunderbar.
Hat das jemand mit weiteren CS Leitungen hinbekommen?
Hier ist noch der Quellcode des Overlays:
1 | /dts-v1/;
|
2 | /plugin/;
|
3 |
|
4 | / {
|
5 | compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
|
6 |
|
7 | fragment@0 {
|
8 | target = <&spi0>;
|
9 | frag0: __overlay__ {
|
10 | #address-cells = <1>;
|
11 | #size-cells = <0>;
|
12 | pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
13 | status = "okay";
|
14 | cs-gpios = <0>, <0>, <&gpio 25 1>, <&gpio 24 1>;
|
15 |
|
16 | spidev@2{
|
17 | compatible = "spidev";
|
18 | reg = <2>; /* CE2 */
|
19 | #address-cells = <1>;
|
20 | #size-cells = <0>;
|
21 | spi-max-frequency = <500000>;
|
22 | };
|
23 |
|
24 | spidev@3{
|
25 | compatible = "spidev";
|
26 | reg = <3>; /* CE3 */
|
27 | #address-cells = <1>;
|
28 | #size-cells = <0>;
|
29 | spi-max-frequency = <500000>;
|
30 | };
|
31 | };
|
32 | };
|
33 |
|
34 | fragment@1 {
|
35 | target = <&gpio>;
|
36 | __overlay__ {
|
37 | spi0_cs_pins: spi0_cs_pins {
|
38 | brcm,pins = <25 24>; /* reserve default spi cs pins */
|
39 | brcm,function = <1>; /* out out out out out */
|
40 | };
|
41 | };
|
42 | };
|
43 | };
|