/* spi_test.c D.J.Whale 18/07/2014
*
* A simple SPI port exerciser.
* Written to do something vaguely useful on the HRFM69 module
* (i.e. read out the version number)
*/
/***** INCLUDES *****/
#include <stdio.h>
#include <stdlib.h>
#include "system.h"
#include "gpio.h"
#include "spi.h"
#include "trace.h"
#include "delay.h"
/***** CONSTANTS *****/
/* GPIO BCM numbers on Raspberry Pi */
#define RESET 25
#define CS 7
#define SCLK 11
#define MOSI 10
#define MISO 9
/* ms */
//#define TSETTLE (1UL * 1000UL) /* us */
//#define THOLD (1UL * 1000UL) /* us */
//#define TFREQ (1UL * 1000UL) /* 1us = 1MHz */
void reset(void)
{
gpio_high(RESET);
delayms(150);
gpio_low(RESET);
delayus(100);
}
int main(int argc, char **argv)
{
unsigned char cmd_readver[2] = {0x10, 0x00};
unsigned char rx[2];
SPI_CONFIG spiConfig = {CS, SCLK, MOSI, MISO, SPI_SPOL0, SPI_CPOL0, SPI_CPHA0};
//{0,TSETTLE},{0,THOLD},{0,TFREQ}};
/* Init */
//printf("init\n");
TRACE_OUTS("init");
TRACE_NL();
//gpio_init(); done by spi_init()
spi_init(&spiConfig);
gpio_setout(RESET);
gpio_low(RESET);
reset();
/* Read version number */
TRACE_OUTS("readver");
TRACE_NL();
spi_select();
spi_frame(cmd_readver, rx, sizeof(cmd_readver));
spi_deselect();
TRACE_OUTS("ver=");
TRACE_OUTN(rx[1]);
TRACE_NL();
/* Cleanup */
spi_finished();
gpio_finished();
return 0;
}
/***** END OF FILE *****/