本帖最后由 anywill 于 2016-10-10 10:35 编辑 ARM®mbed OS入门开发(五)SPI2016-10-05 Summerain [url=]小白学嵌入式[/url] 【七】Serial communications with SPI 1. mbed SPI master library functions(SPI主机库函数) //建立SPI master连接到SPI通信引脚,如果不手动设置格式和频率的话,默认是8bits, mode=0, 频率1MHz SPI(PinName mosi, PinName miso, PinName sclk, PinName _unused=NC); //设置SPI工作的传输模式和传输一帧的比特数,mode取值为0-3,bits取值为4-16 void format(int bits, int mode = 0); //设置SPI bus clock frequency void frequency(int hz = 1000000); //SPI master向Slave发送数据,返回Slave的返回值 virtual int write(int value); 2. SPI master应用过程: 1. SPI初始化,包括工作模式format,工作频率frequency; 频率要根据从机设备slave device (最高70 MHz) 2. SPI主机的收发 1)主机将从机片选信号(CS) 拉底至0 V 2)接着,主机通过SCLK,传输时钟脉冲,表明数据将要被传输 3)同时,主机通过MOSI发送数据,同时从机通过MISO返回数据 3. SPI Master读写操作: 之前提到,如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节(Dummy Byte)来引发从机的传输。当主机发送一个连续的数据流时,有些外设能够进行多字节传输。多数具有SPI接口的存储芯片就以这种方式工作。在这种传输方式下,从机的片选端必须在整个传输过程中保持低电平。 下面以Bosch BMP280传感器为例: 根据Datasheet所述: (1) SPI 模式:
(2)SPI写操作流程:
其中,片选有效后,发送一个Control byte, 写一个Data byte,然后发送地址增加1后的下一个Control byte, 写Data byte。可以一直写,直到结束然后将CS拉高。 (3)SPI读操作(4线SPI为例):
其中,片选有效后,先发送一个Control byte,而后每发送一个空字节,寄存器地址会自动增加1,读取返回值。直到结束将CS拉高 作者微信 |
先占位 |
顶一下,,,,,,,, |
支持楼主 |
很不错的帖子,感谢分享。 |
不错的教程 |