简单来说,如果你通过检索从而看到这篇文章,那就假设你已经知道Pixy2是用来干什么的(一款功能强大的开源视觉传感器),以及你已拥有一些STM32基础。你可以通过访问官方手册来获得更多关于Pixy2的相关信息。
如果你已经非常了解Pixy2的运作模式,只是想快速与STM32建立通信,那么你可以直接参考我的代码:
通常情况下Pixy2是搭配Arduino使用的,并且Pixy2能通过SPI以2 Mbits/秒的速度向Arduino发送信息。不过如果让Pixy2与不同的平台进行通信,首先就要确定以哪种方式进行通信。官方给出Pixy2支持的通信方式有SPI、I2C、UART、USB和Analog/digital,并且通信速度USB>SPI>I2C>UART>A/D。本文将具体描述Pixy2与STM32的SPI通信。
设置与连接
首先,你需要去官网下载一个叫PixyMon的软件,它能让你在Windows或Mac平台对Pixy2进行设置。
将你的Pixy2与电脑用USB线连接后,打开软件,在Configure-Interface-Data out port选项中,我们选择Arduino ICSP SPI。是的,即使是与Arduino通信的SPI选项,也可以应用到STM32上,其他选项不用更改。
设置好后,我们把Pixy2与电脑连接的USB断开,用杜邦线将Pixy2与STM32连接,我这里用的STM32是正点原子的STM32mini开发板。在连接之前,我们先看一下Pixy2的管脚图:
在Arduino ICSP SPI模式中主要用到(1)(3)(4)三个管脚,还有5V和GND与STM32的5V和GND直接相连就行了,两者具体的连接方法如下:
Pin 1 (SPI MISO) ➜ PA6 (STM32 SPI MISO signal)
Pin 4 (SPI MOSI) ➜ PA7 (STM32 SPI MOSI signal)
Pin 3 (SPI SCK) ➜ PA5 (STM32 SPI SCK signal)
Pin 2 ➜ 5V (STM32 5V)
Pin 6 ➜ GND (STM32 GND)
串口协议
Pixy2是以数据包的形式来和上位机进行通信的,也就是说,想要和Pixy2通信,你必须向Pixy2发送一个请求数据包,然后Pixy2再把你想要得到的数据或者状态用数据包发给你。所以你的请求/反馈数据包就像下面的格式:
Requests-(你发给pixy的)
字节
说明
数值
0-1
16-bit sync
174, 193 (0xc1ae)
2
Type of packet
(varies)
3
Length of payload in bytes (len)
(varies)
4-len
Variable length payload
(varies)
Responses-(pixy发给你的)
字节
说明