0°

(五)msp430基础:与Energia中的串行通信相关的基本功能

让我们看一下Energia IDE中经常使用的与串行通信相关的一些基本功能。

 

目录

UART

a)  Serial.begin(baud_rate)

  • baud_rate:将用于串行通信的波特率。可以是4800,9600,14400,19200等
  • 此功能用于定义将用于串行通信的波特率。要与特定设备通信,需要使用设备波特率。
  • ExampleSerial.begin(9600)定义9600波特率进行通信。

 

b) Serial.available()

  • 此函数用于获取可从串行端口读取的字节数。它给出了已到达并存储在串行接收缓冲区中的数据字节数。
  • 例如,if(Serial.available())
  • 如果数据在串口可用,请采取措施。

 

c)Serial.print(value)

  • value :字符,字符串,要打印的数字。
  • 此函数用于以人类可读的形式(字符,字符串,数字)将数据打印到串行端口。
  • Example Serial.print(“Hi 1234”)在串行监视器上
  • 打印Hi 1234

 

d)Serial.println(value)

  • value :字符,字符串,要打印的数字。
  • 此函数用于以人类可读的形式(字符,字符串,数字)将数据打印到串行端口,后跟回车符(\ r)和新行字符(\ n)。

 

e)   Serial.read()

  • 此函数返回在Launchpad的Rx引脚上接收的字符。
  • Example char read_byte 
  •          read_byte = Serial.read()
  • 读取的数据字节存储在read_byte中。

 

f)   Serial.write(value), Serial.write(string), Serial.write(buff, length)

  • value :要作为单个字节发送的值。
  • string :要作为一系列字节发送的字符串。
  • buff :要作为字节发送的数据数组。
  • length :要发送的字节数。
  • 此函数以二进制形式将数据写入串行端口。数据以字节或字节串的形式发送。
  • Example Serial.write(100)
  •          Serial.write(“Hello”)

 

/* 串行通信功能 */



/* Setup is run once at the start (Power-On or Reset) of sketch */
void setup()
{
  Serial.begin(9600); /* opens serial port, sets data rate to 9600 bps */
}

/* Loop runs over and over after the startup function */
void loop()
{int data = 0;if(Serial.available()>0) /* If data available at serial port, enter if loop */
  {
    data = Serial.read(); /* Read data present at serial port */
    Serial.println("Data Received is : "); /* Print string with \r\n */
    Serial.write(data); /* Print data received */
  }  
}

 

SPI

a)  SPI.begin(slaveSelectPin)

  • slaveSelectPin :引脚被选为从选择引脚。如果未传递此参数,则引脚2用作默认从选择引脚。
  • 该功能通过将SCK,MOSI和SS设置为输出来初始化SPI总线,将SCK和MOSI拉低,SS拉高。

 

b)  SPI.end(slaveSelectPin)

  • slaveSelectPin :仅当SPI.begin()函数使用了不同的从选择引脚(默认引脚号2除外)时使用。
  • 此功能可在不更改引脚模式的情况下禁用SPI总线。

 

c)SPI.transfer(slaveSelectPin , value)

  • slaveSelectPin :从器件选择引脚,用于选择器件。
  • value :要通过总线发送的字节。
  • 返回的值可以存储在数据变量中。
  • SPI传输基于同时发送和接收。
  • 如果指定slaveSelectPin,则在传输之前将该特定引脚拉低,并在传输完成后拉高。
  • Example char received_val 
  •          received_val = SPI

 

/* SPI通信功能 */

#include 
const int slavePin = 6; /* Pin used as chip select pin for the Slave device */

/* Setup is run once at the start (Power-On or Reset) of sketch */
void setup()
{
  pinMode(slavePin, OUTPUT); /* Configure slavePin as an output pin */
  SPI.begin(); /* Initialize SPI */
}

/* Loop runs over and over after the startup function */
void loop()
{
  digitalWrite(slavePin, LOW); /* Chip Select pin low to initialize communication with slave */
  SPI.transfer(0x45); /* Transfer data *//* 0x45 is sent to slave device. At the same time, a byte of data is received from the slave */
  digitalWrite(slavePin, HIGH); /* Chip Select pin high to end communication with slave */
}

 

 

I2C

a) Wire.begin(address)

  • address:设备的7位从机地址。如果未指定,则设备作为主站加入总线。
  • 此功能用于启动线程库并将总线作为主站或从站加入。

 

b) Wire.beginTransmission(address)

  • address :要发送到的设备的7位地址。
  • 该功能用于开始使用给定地址传输到I2C从器件。在此之后,使用Wire.write()函数对要传输的队列字节进行传输,并通过调用Wire.endTransmission()函数进行传输。
  • Example Wire.beginTransmission(0x23)
  • 开始传输到地址为0x23的I2C设备。

 

c)  Wire.endTransmission(stop)

  • stop :布尔数据类型。True将在请求后发送停止消息,从而释放总线。False将在请求后不断发送重新启动,从而保持连接处于活动状态。
  • 此函数结束使用Wire.beginTransmission()函数启动到从设备的传输,并传输由Wire.write()函数排队的字节。

 

d) Wire.write(value), Wire.write(string), Wire.write(data, length)

  • value :要作为单个字节发送的值。
  • string :要作为一系列字节发送的字符串。
  • data :要作为字节发送的数据数组。
  • length :要发送的字节数。
  • 此函数响应来自主设备的请求从从设备写入数据,或者在调用Wire.beginTransmission()和Wire.endTransmission()之间将队列字节用于从主设备传输到从设备。

 

e) Wire.available()

  • 此函数返回可用Wire.read()函数读取的字节数。

 

f)  Wire.read()

  • 此函数读取在Wire.requestFrom()函数之后从从设备发送到主设备的字节,或读取从主设备发送到从设备的字节。

 

g)  Wire.requestFrom(address, quantity, stop)

  • address :要从中请求字节的设备的7位地址。
  • quantity :要请求的字节数。
  • stop :布尔数据类型。True将在请求后发送停止消息,从而释放总线。False将在请求后不断发送重新启动,从而保持连接处于活动状态。
  • 主机使用此功能从从设备请求字节。
限制以下用户组阅读此隐藏内容

请先登录

您的用户组:
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论