Exemplo n.º 1
0
signed int gyroRead(unsigned int addr)
{
    unsigned int dataOut;
    signed int gyroVal=0;

    GYRO = SEL;
    dataOut = (spiXfer(addr) & 0x3FFF);
    GYRO = DESEL;
    delay_us(5);
    GYRO = SEL;
    dataOut = spiXfer(0x0000);
    GYRO = DESEL;
    gyroVal = SIGNED14(dataOut);
    delay_us(5);

    return gyroVal;
}
Exemplo n.º 2
0
signed int accelRead(unsigned int addr)
{
    unsigned int dataOut;
    signed int accelVal=0;

    ACCEL = SEL;
    dataOut = (spiXfer(addr) & 0x3FFF);
    ACCEL = DESEL;
    delay_us(5);
    ACCEL = SEL;
    dataOut = (spiXfer(0x0000) & 0x3FFF);
    ACCEL = DESEL;
    if((addr == XINCL) || (addr == YINCL))
        accelVal = SIGNED12(dataOut);
    else
        accelVal = SIGNED14(dataOut);
    delay_us(5);

    return (accelVal);
}
Exemplo n.º 3
0
int main(int argc, char *argv[])
{
   int loops=LOOPS;
   int speed=SPEED;
   int bytes=BYTES;
   int i;
   int h;
   double start, diff, sps;
   unsigned char buf[16384];

   if (argc > 1) bytes = atoi(argv[1]);
   if ((bytes < 1) || (bytes > 16383)) bytes = BYTES;

   if (argc > 2) speed = atoi(argv[2]);
   if ((speed < 32000) || (speed > 32000000)) speed = SPEED;

   if (argc > 3) loops = atoi(argv[3]);
   if ((loops < 1) || (loops > 10000000)) loops = LOOPS;

   if (gpioInitialise() < 0) return 1;

   h = spiOpen(0, speed, 0);

   if (h < 0) return 2;

   start = time_time();

   for (i=0; i<loops; i++)
   {
      spiXfer(h, buf, buf, bytes);
   }

   diff = time_time() - start;

   printf("sps=%.1f: %d bytes @ %d bps (loops=%d time=%.1f)\n",
      (double)loops / diff, bytes, speed, loops, diff);

   spiClose(h);

   gpioTerminate();

   return 0;
}
Exemplo n.º 4
0
  // read analog voltage from ADC
int read_analog(int in_ch_adc)
{
    char txBuf[3],rxBuf[3];
    int ch_adc;

    // PCB was marked wrong way
    if (in_ch_adc == 0 )   { ch_adc = 7; }
    if (in_ch_adc == 1 )   { ch_adc = 6; }
    if (in_ch_adc == 2 )   { ch_adc = 5; }
    if (in_ch_adc == 3 )   { ch_adc = 4; }
    if (in_ch_adc == 4 )   { ch_adc = 3; }
    if (in_ch_adc == 5 )   { ch_adc = 2; }
    if (in_ch_adc == 6 )   { ch_adc = 1; }
    if (in_ch_adc == 7 )   { ch_adc = 0; }


    //printf("   ch_adc=%d\n",ch_adc);
    int ch_adc_b0 = ch_adc&1;
    int ch_adc_b1 = (ch_adc&2)>>1;
    int ch_adc_b2 = (ch_adc&4)>>2;
    if (disp_level>1)
     {
       printf("     b2 = %d b1 = %d b0 =%d\n",ch_adc_b0,ch_adc_b1,ch_adc_b2);
     }
    txBuf[0] = 1;
    txBuf[1] = 8 | (ch_adc_b2<<2) | (ch_adc_b1<<1) | ch_adc_b0 ;
    txBuf[1] = txBuf[1]<<4;
    txBuf[2] = 0;
    //sprintf(txBuf,"\x01\xF0\x00");
    if (disp_level>1)
     {
       printf("     txBuf[0]=%x txBuf[1]=%x txBuf[2]=%x\n",txBuf[0],txBuf[1],txBuf[2]);
     }
    //spiWrite(spi_h,txBuf,3);
    spiXfer(spi_h,txBuf,rxBuf,3);
    //printf("      rxBuf[0]=%x rxBuf[1]=%x rxBuf[2]=%x\n",rxBuf[0],rxBuf[1],rxBuf[2]);

    int adc_value = ((rxBuf[1]&3) << 8) | (rxBuf[2]) ;
    //printf(" in_volt=%d\n",adc_value);
    return adc_value;
}
Exemplo n.º 5
0
bool spiRead(uint32_t length, uint8_t * data)
{
  return spiXfer(length, NULL, data);
}
Exemplo n.º 6
0
bool spiWrite(uint32_t length, const uint8_t * data)
{
  return spiXfer(length, data, NULL);
}
Exemplo n.º 7
0
void spiTransfer(void *buffer, int length) {
  spiXfer(length, buffer, buffer);
}