SmartOS之------SPI基础

作用


 

SPI通讯适用于SpiFlash的AT45DB、Enc28j60、NRF24L01等。

 

代码


 

 1 /*Spi定义*/

 2 //SPI1..这种格式与st库冲突

 3 #define SPI_1    0

 4 #define SPI_2    1

 5 #define SPI_3    2

 6 #define SPI_NONE 0XFF

 7 

 8 // Spi类

 9 class Spi

10 {

11 private:

12     int _spi;

13     OutputPort* _nss;

14 

15     AlternatePort* clk;

16     AlternatePort* msio;

17     AlternatePort* mosi;

18 

19 public:

20     SPI_TypeDef* SPI;

21     int Speed;  // 速度

22     int Retry;  // 等待重试次数,默认200

23     int Error;  // 错误次数

24 

25     // 使用端口和最大速度初始化Spi,因为需要分频,实际速度小于等于该速度

26     Spi(int spi, int speedHz = 9000000, bool useNss = true);

27     virtual ~Spi();

28 

29     byte Write(byte data);

30     ushort Write16(ushort data);

31 

32     void Start();   // 拉低NSS,开始传输

33     void Stop();    // 拉高NSS,停止传输

34 };

35 

36 // Spi会话类。初始化时打开Spi,超出作用域析构时关闭

37 class SpiScope

38 {

39 private:

40     Spi* _spi;

41 

42 public:

43     force_inline SpiScope(Spi* spi)

44     {

45         _spi = spi;

46         _spi->Start();

47     }

48 

49     force_inline ~SpiScope()

50     {

51         _spi->Stop();

52     }

53 };

 

 

讲解


 

串口类Server,指定要使用的串口,波特率,后面有几个默认参数,大概就是数据位、停止位、校验方式等。
Open打开串口
Register注册串口接收事件到OnUsartRead函数
OnUsartRead里面只知道收到了数据,需要自己去Read读取。
所以,即使不用Register注册异步接收,也仍然可以用Read同步接收数据。

End!

    ------来自新生命团队!

 

欢迎大家一起交流 ,分享程序员励志故事。   幸福的程序员 QQ群:幸福的程序员 嵌入式交流群中国嵌入式物联网群

你可能感兴趣的:(SPI)