老邓店里有不少树莓派、香蕉派的扩展模块,大大加强了它们的可玩性。 今天拿到了一个这样的模块,74HC5950,使用SPI方式驱动的可无限级联的模块。 这个模块可适用于香蕉派M1、M1+、M2,也就是说各种香蕉派的版本都可以使用。
插上后是这个样子
近照
使用三个口就能驱动了。当然还要包括VCC和GND。 ST24 SPI0_CS0 PI10 SH23 SPI0_CLK PI11 DS19 SPI0_MOSI PI12 程序基本就是这样的 unit SR595; {$mode objfpc}{$H+} interface uses Classes, SysUtils, GPIO; type TSR595 = class private FDS: TGPIO; //MOSI FSH: TGPIO; //CLK FST: TGPIO; //CS public constructor Create; destructor Destroy; override; procedure Write(B: Byte); overload; procedure Write(B: array of Byte; Len: Byte); overload; procedure Send; end; implementation constructor TSR595.Create; begin inherited Create; FDS:= TGPIO.Create(PI, 12); with FDS do begin Fun:= Fun1; Data:= True; end; FSH:= TGPIO.Create(PI, 11); with FSH do begin Fun:= Fun1; Pull:= PULL_UP; Data:= True; end; FST:= TGPIO.Create(PI, 10); with FST do begin Fun:= Fun1; Pull:= PULL_UP; Data:= True; end; end; destructor TSR595.Destroy; begin FDS.Free; FSH.Free; FST.Free; inherited Destroy; end; procedure TSR595.Write(B: Byte); overload; var I: Byte; begin //FST.Data:= False; for I:= 0 to 7 do begin FSH.Data:= False; FDS.Data:= ((B and $80) > 0); B:= B shl 1; FSH.Data:= True; end; //FST.Data:= True; end; procedure TSR595.Write(B: array of Byte; Len: Byte); overload; var I: Byte; begin for I:= 0 to Len - 1 do Write(B[I]); end; procedure TSR595.Send; begin FST.Data:= False; FST.Data:= True; end; end. 用WiringPI调用也可以的。
|