Mike Spadaru / physcom
Committer:
maspadaru
Date:
Tue Nov 24 14:26:05 2020 +0000
Revision:
10:b1bdc51e1c50
added Pixy2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maspadaru 10:b1bdc51e1c50 1 //
maspadaru 10:b1bdc51e1c50 2 // begin license header
maspadaru 10:b1bdc51e1c50 3 //
maspadaru 10:b1bdc51e1c50 4 // This file is part of Pixy CMUcam5 or "Pixy" for short
maspadaru 10:b1bdc51e1c50 5 //
maspadaru 10:b1bdc51e1c50 6 // All Pixy source code is provided under the terms of the
maspadaru 10:b1bdc51e1c50 7 // GNU General Public License v2 (http://www.gnu.org/licenses/gpl-2.0.html).
maspadaru 10:b1bdc51e1c50 8 // Those wishing to use Pixy source code, software and/or
maspadaru 10:b1bdc51e1c50 9 // technologies under different licensing terms should contact us at
maspadaru 10:b1bdc51e1c50 10 // cmucam@cs.cmu.edu. Such licensing terms are available for
maspadaru 10:b1bdc51e1c50 11 // all portions of the Pixy codebase presented here.
maspadaru 10:b1bdc51e1c50 12 //
maspadaru 10:b1bdc51e1c50 13 // end license header
maspadaru 10:b1bdc51e1c50 14 //
maspadaru 10:b1bdc51e1c50 15 // Arduino ICSP SPI link class
maspadaru 10:b1bdc51e1c50 16
maspadaru 10:b1bdc51e1c50 17 #ifndef _PIXY2_H
maspadaru 10:b1bdc51e1c50 18 #define _PIXY2_H
maspadaru 10:b1bdc51e1c50 19
maspadaru 10:b1bdc51e1c50 20 #include "TPixy2.h"
maspadaru 10:b1bdc51e1c50 21 #include "mbed.h"
maspadaru 10:b1bdc51e1c50 22
maspadaru 10:b1bdc51e1c50 23 #define PIXY_SPI_CLOCKRATE 2000000
maspadaru 10:b1bdc51e1c50 24
maspadaru 10:b1bdc51e1c50 25 class Link2SPI {
maspadaru 10:b1bdc51e1c50 26 public:
maspadaru 10:b1bdc51e1c50 27 Link2SPI() {
maspadaru 10:b1bdc51e1c50 28 spi = new SPI(p5, p6, p7);
maspadaru 10:b1bdc51e1c50 29 }
maspadaru 10:b1bdc51e1c50 30
maspadaru 10:b1bdc51e1c50 31 Link2SPI(SPI *spi) {
maspadaru 10:b1bdc51e1c50 32 this->spi = spi;
maspadaru 10:b1bdc51e1c50 33 }
maspadaru 10:b1bdc51e1c50 34
maspadaru 10:b1bdc51e1c50 35 int8_t open(uint32_t arg)
maspadaru 10:b1bdc51e1c50 36 {
maspadaru 10:b1bdc51e1c50 37 spi->format(8, 3);
maspadaru 10:b1bdc51e1c50 38 spi->frequency(PIXY_SPI_CLOCKRATE);
maspadaru 10:b1bdc51e1c50 39
maspadaru 10:b1bdc51e1c50 40 return 0;
maspadaru 10:b1bdc51e1c50 41 }
maspadaru 10:b1bdc51e1c50 42
maspadaru 10:b1bdc51e1c50 43 void close()
maspadaru 10:b1bdc51e1c50 44 {
maspadaru 10:b1bdc51e1c50 45 }
maspadaru 10:b1bdc51e1c50 46
maspadaru 10:b1bdc51e1c50 47 int16_t recv(uint8_t* buf, uint8_t len, uint16_t* cs = NULL)
maspadaru 10:b1bdc51e1c50 48 {
maspadaru 10:b1bdc51e1c50 49 uint8_t i;
maspadaru 10:b1bdc51e1c50 50
maspadaru 10:b1bdc51e1c50 51 if (cs) {
maspadaru 10:b1bdc51e1c50 52 *cs = 0;
maspadaru 10:b1bdc51e1c50 53 }
maspadaru 10:b1bdc51e1c50 54 for (i = 0; i < len; i++) {
maspadaru 10:b1bdc51e1c50 55 buf[i] = spi->write(0x00);
maspadaru 10:b1bdc51e1c50 56 if (cs) {
maspadaru 10:b1bdc51e1c50 57 *cs += buf[i];
maspadaru 10:b1bdc51e1c50 58 }
maspadaru 10:b1bdc51e1c50 59 }
maspadaru 10:b1bdc51e1c50 60
maspadaru 10:b1bdc51e1c50 61 return len;
maspadaru 10:b1bdc51e1c50 62 }
maspadaru 10:b1bdc51e1c50 63
maspadaru 10:b1bdc51e1c50 64 int16_t send(uint8_t* buf, uint8_t len)
maspadaru 10:b1bdc51e1c50 65 {
maspadaru 10:b1bdc51e1c50 66 uint8_t i;
maspadaru 10:b1bdc51e1c50 67
maspadaru 10:b1bdc51e1c50 68 for (i = 0; i < len; i++) {
maspadaru 10:b1bdc51e1c50 69 spi->write(buf[i]);
maspadaru 10:b1bdc51e1c50 70 }
maspadaru 10:b1bdc51e1c50 71
maspadaru 10:b1bdc51e1c50 72 return len;
maspadaru 10:b1bdc51e1c50 73 }
maspadaru 10:b1bdc51e1c50 74
maspadaru 10:b1bdc51e1c50 75 private:
maspadaru 10:b1bdc51e1c50 76 SPI *spi;
maspadaru 10:b1bdc51e1c50 77 };
maspadaru 10:b1bdc51e1c50 78
maspadaru 10:b1bdc51e1c50 79 typedef TPixy2<Link2SPI> Pixy2;
maspadaru 10:b1bdc51e1c50 80
maspadaru 10:b1bdc51e1c50 81 #endif
maspadaru 10:b1bdc51e1c50 82