有,而且UNO还有spi的库
具体引脚D10-->SS, D11-->MOSI, D12 -->MISO, D13 -->SCK
附赠你一套程序
两块UNO之间spi通信
从机
#include <SPI.h>
void setup (void)
{
Serial.begin(9600); // 开始串口通讯
digitalWrite(SS, HIGH);
SPI.begin (); // PI通讯开始
//SPI.setClockDivider(SPI_CLOCK_DIV8); //??
}
void loop (void)
{
char c;
// 片选为从机
digitalWrite(SS, LOW); // SS - pin 10
// 发送字串
for (const char * p = "Hello, world!\n" ; c = *p; p++) {
SPI.transfer (c);
Serial.print(c);
}
// 取消从机
digitalWrite(SS, HIGH);
delay (1000);
}
主机
#include <SPI.h>
char buf [100];
volatile byte pos;
volatile boolean process_it;
void setup (void)
{
Serial.begin (9600);
// have to send on master in, *slave out*
pinMode(MISO, OUTPUT);
// 设置为接收状态
SPCR |= _BV(SPE);
// 准备接受中断
pos = 0; // 清空缓冲区
process_it = false;
// 开启中断
SPI.attachInterrupt();
}
// SPI 中断程序
ISR (SPI_STC_vect)
{
byte c = SPDR; // 从 SPI 数据寄存器获取数据
if (pos < sizeof(buf))
{
buf [pos++] = c;
if (c == '\n')
process_it = true;
}
}
void loop (void)
{
if (process_it)
{
buf [pos] = 0;
Serial.println (buf);
pos = 0;
process_it = false;
}
}