进阶之路(基础篇) - 010 Arduino 函数(基本串口SPI)

Posted 极客先锋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进阶之路(基础篇) - 010 Arduino 函数(基本串口SPI)相关的知识,希望对你有一定的参考价值。

一.基本函数

      pinMode(引脚号,模式);

      digitalWrite(引脚号,电平状态);              //默认低电平(或浮空)  

  digitalRead(数字输入端口号);

  analogRead(引脚号);               //调用10位AD

  analogWrite(引脚号,模拟量);             //调用8位AD

  pulseIn(引脚号,脉冲响应电平,最大响应时间(微秒));

 

二.串口

         Serial.begin(数据传输的波特率);

         Serial.println(传回的数据);

         Serial.available();                                 //判断串口是否接收到数据

         Serial.print(字符串);                           //通过TX传出去

         Serial.write(字符串);                          //写入串口中

         Serial.println(字符串);                       //通过TX传出去,并在尾端加换行

         Serial.print(thisByte);                         //打印文字

         Serial.print(thisByte,HEX);                //打印十六进制数

         Serial.print(thisByte,OCT);                //打印八进制数

         Serial.print(thisByte,BIN);                 //打印二进制数

         max(a,b);                                               //返回最大值

 

 

三.SPI(高阶库)

         SS/CS:片选(高电平屏蔽,低电平启用)

         MOSI :主机送出信号

         MISO :主机结收信号

         CLK  :时钟脉冲

SPI成员:

         begin();

                   功能 :初始化SPI,设置CLK,MISO和SS为输出,将SCK和MOSI拉低,将SS拉高。

                   形式 :SPI.begin();

                   返回值:none

         setBitOrder();

                   功能:设 置进入和输出SPI总线比特(bit)的顺序:LSBFIRST(低位开始)或者 MSBFIRST (高位开始)。

                   形式:SPI.setBitOrder(order);

                   参数:order:LSBFIRST或 MSBFIRST

                   返回值:none

         setClockDivider();

                   功能:设置SPI串行通信时钟的分频系数

                   形式:setClockDivider(SPI_CLOCK);

                   参数(SPI_CLOCK)

                            SPI_CLOCK_DIV2  //2分频,系统时钟的 1/2

                            SPI_CLOCK_DIV4  //4分频,系统时钟的 1/4

                            SPI_CLOCK_DIV8  //8分频,系统时钟的 1/8

                            SPI_CLOCK_DIV16 //16分频,系统时钟的 1/16

                            SPI_CLOCK_DIV32         //32分频,系统时钟的 1/32

                            SPI_CLOCK_DIV64         //64分频,系统时钟的 1/64

                            SPI_CLOCK_DIV128        //128分频,系统时钟的 1/128

         setDataMode();

                   功能:设置数据模式

                   形式:SPI.setDataMode(mode);

                   参数(mede):

                            SPI_MODE0  CPOL = 0 CPHA = 0

                            SPI_MODE1  CPOL = 0 CPHA = 1

                            SPI_MODE2  CPOL = 1 CPHA = 0

                            SPI_MODE3  CPOL = 1 CPHA = 1

                            时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(1:空闲时高电平; 0:空闲时低电平)

                            时钟相位CPHA: 即SPI在SCLK第几个边沿开始采样(0:第一个边沿开始; 1:第二个边沿开始)

         transfer();

                   功能:在SPI上传输一个字节(byte),发送和接收都是这个函数

                   形式:SPI.transfer(val);

                   参数(val):要发送的字节

                   返回值:从 bus 上读取字节。(读操作使用的时候)

         end();

                   功能:结束传输

                   形式:end();

                   参数:无

                   返回值:无

四.SPI(低阶aTmega(AVR) 库)

         SPI三个寄存器SPCR(控制寄存器),SPCR(状态寄存器),SPDR(数据的暂存器)

                   SPCR(SPI Control Register暂存寄存器)

                            7bit  SPIE 片选使能,SPIE = 1;片选无效,SPIE = 0片选有效(主机无需片选)(单机通信也无需片选)

                            6bit  SPE           

                            5bit  DORD      

                            4bit  MSTR       

                            3bit  CPOL         时钟极性,CPOL = 0(时钟空闲为低电平);CPOL = 1(时钟空闲为高电平)

                            2bit  CPHA        相位极性,CPHA = 0(表示第一个边沿);CPHA = 1(表示第二个边沿);都是表示数据采样,数据有效的时刻。

                            1bit  SPR1        

                            0bit  SPR0 

                   SPCR(SPI Status Register 暂存寄存器)

                   SPDR(SPI Control Register数据的暂存器)

以上是关于进阶之路(基础篇) - 010 Arduino 函数(基本串口SPI)的主要内容,如果未能解决你的问题,请参考以下文章

进阶之路(基础篇) - 020 放弃Arduino IDE,拥抱Sublime Text 3

进阶之路(基础篇) - 012 Arduino IDE 添加DHT11传感器第三方库的方法

进阶之路(中级篇) - 018 基于arduino的简易版智能衣架

进阶之路(基础篇) - 007 脉冲宽度测量

进阶之路(基础篇) - 006 串口的使用

进阶之路(基础篇) - 005 模拟PWM波控制引脚