示例#1
0
void SPIFlash::GetManufacturerInfo (uint8_t *manufID, uint8_t *deviceID)
{
  // W25Q16BV_CMD_MANUFDEVID (0x90) provides both the JEDEC manufacturer
  // ID and the device ID

  digitalWrite(_ss, LOW);
  spiwrite(W25Q16BV_CMD_MANUFDEVID); 
  spiwrite(0x00);            // Dummy write
  spiwrite(0x00);            // Dummy write
  spiwrite(0x00);            // Dummy write
  *manufID = spiread();
  *deviceID = spiread();
  digitalWrite(_ss, HIGH);
}
uint8_t Adafruit_PN532::readspistatus(void) {
  digitalWrite(_ss, LOW);
  delay(2); 
  spiwrite(PN532_SPI_STATREAD);
  // read byte
  uint8_t x = spiread();
  
  digitalWrite(_ss, HIGH);
  return x;
}
uint16_t Adafruit_VS1053::sciRead(uint8_t addr) {
    uint16_t data;

#ifdef SPI_HAS_TRANSACTION
    if (useHardwareSPI) SPI.beginTransaction(VS1053_CONTROL_SPI_SETTING);
#endif
    digitalWrite(_cs, LOW);
    spiwrite(VS1053_SCI_READ);
    spiwrite(addr);
    delayMicroseconds(10);
    data = spiread();
    data <<= 8;
    data |= spiread();
    digitalWrite(_cs, HIGH);
#ifdef SPI_HAS_TRANSACTION
    if (useHardwareSPI) SPI.endTransaction();
#endif

    return data;
}
示例#4
0
uint8_t SPIFlash::readstatus()
{
  uint8_t status;

  digitalWrite(_ss, LOW);
  spiwrite(W25Q16BV_CMD_READSTAT1);    // Send read status 1 cmd
  status = spiread();                  // Dummy write
  digitalWrite(_ss, HIGH);

  return status & (SPIFLASH_STAT_BUSY | SPIFLASH_STAT_WRTEN);
}
示例#5
0
void SPIFlash::readspidata(uint8_t* buff, uint8_t n) 
{
  digitalWrite(_ss, LOW);
  delay(2); 
  spiwrite(0x00);  // ToDo: Send read command

  for (uint8_t i=0; i<n; i++) {
    delay(1);
    buff[i] = spiread();
  }

  digitalWrite(_ss, HIGH);
}
示例#6
0
double MAX6675::readCelsius(void) {

  uint16_t v;

  digitalWrite(cs, LOW);

  // CSB Fall to Output Enable
  delayMicroseconds(1000);

  if (hwSPI) {
#ifdef MAX6675_LIBRARY_HW_SLOWDOWN
    uint8_t oldSPCR = SPCR;
    SPCR |= 3; // As slow as possible (clock/128 or clock/64 depending on SPI2X)
#endif // MAX6675_LIBRARY_HW_SLOWDOWN
    v = SPI.transfer16(0);
#ifdef MAX6675_LIBRARY_HW_SLOWDOWN
    SPCR = oldSPCR;
#endif // MAX6675_LIBRARY_HW_SLOWDOWN
  } else {
    v = spiread();
    v <<= 8;
    v |= spiread();
  }

  digitalWrite(cs, HIGH);
  // CSB Rise to Output Disable
  delayMicroseconds(1000);

  if (v & 0x4) {
    // uh oh, no thermocouple attached!
    return NAN;
    //return -100;
  }

  v >>= 3;

   return (v*0.25) - offset;
}
示例#7
0
double MAX6675::readCelsius(void) {

  uint16_t v;

  digitalWrite(cs, LOW);
  _delay_ms(1);

  v = spiread();
  v <<= 8;
  v |= spiread();

  if (v & 0x4) {
    // uh oh, no thermocouple attached!
    return NAN; 
    //return -100;
  }

  v >>= 3;

  digitalWrite(cs, HIGH);

  return v*0.25;
}
示例#8
0
double MAX6675::readCelsius(void) {

    uint16_t v;

    digitalWrite(cs, LOW);
    delayMicroseconds(pinDelay);

    v = spiread();
    v <<= 8;
    v |= spiread();

    digitalWrite(cs, HIGH);

    if (v & 0x4) {
        // uh oh, no thermocouple attached!
        return 0;
        //return -100;
    }

    v >>= 3;

    return v*0.25;
}
示例#9
0
void SPIFlash::GetUniqueID(uint8_t *buffer)
{
  uint8_t i;

  digitalWrite(_ss, LOW);
  spiwrite(W25Q16BV_CMD_READUNIQUEID); // Unique ID cmd
  spiwrite(0xFF);                      // Dummy write
  spiwrite(0xFF);                      // Dummy write
  spiwrite(0xFF);                      // Dummy write
  spiwrite(0xFF);                      // Dummy write
  // Read 8 bytes worth of data
  for (i = 0; i < 8; i++)
  {
    buffer[i] = spiread();
  }
  digitalWrite(_ss, HIGH);
}
void Adafruit_PN532::readspidata(uint8_t* buff, uint8_t n) {
  digitalWrite(_ss, LOW);
  delay(2); 
  spiwrite(PN532_SPI_DATAREAD);

#ifdef PN532DEBUG
  puts("Reading: ");
#endif
  for (uint8_t i=0; i<n; i++) {
    delay(1);
    buff[i] = spiread();
#ifdef PN532DEBUG
    puts(" 0x");
    puts("riga 919");
#endif
  }

#ifdef PN532DEBUG
  puts();
#endif

  digitalWrite(_ss, HIGH);
}
示例#11
0
void Adafruit_PN532::readspidata(uint8_t* buff, uint8_t n) {
  digitalWrite(_ss, LOW);
  delay(2); 
  spiwrite(PN532_SPI_DATAREAD);

#ifdef PN532DEBUG
  Serial.print("Reading: ");
#endif
  for (uint8_t i=0; i<n; i++) {
    delay(1);
    buff[i] = spiread();
#ifdef PN532DEBUG
    Serial.print(" 0x");
    Serial.print(buff[i], HEX);
#endif
  }

#ifdef PN532DEBUG
  Serial.println();
#endif

  digitalWrite(_ss, HIGH);
}
示例#12
0
uint32_t SPIFlash::ReadBuffer (uint32_t address, uint8_t *buffer, uint32_t len)
{
  uint32_t a, i;
  a = i = 0;

  // Make sure the address is valid
  if (address >= W25Q16BV_MAXADDRESS)
  {
    return 0;
  }

  // Wait until the device is ready or a timeout occurs
  if (WaitForReady())
    return 0;

  // Send the read data command
  digitalWrite(_ss, LOW);
  spiwrite(W25Q16BV_CMD_READDATA);      // 0x03
  spiwrite((address >> 16) & 0xFF);     // address upper 8
  spiwrite((address >> 8) & 0xFF);      // address mid 8
  spiwrite(address & 0xFF);             // address lower 8
  // Fill response buffer
  for (a = address; a < address + len; a++, i++)
  {
    if (a > W25Q16BV_MAXADDRESS)
    {
      // Oops ... we're at the end of the flash memory
	  // return bytes written up until now
      return i;
    }
    buffer[i] = spiread();
  }
  digitalWrite(_ss, HIGH);

  // Return bytes written
  return i;
}