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; }
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); }
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); }
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; }
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; }
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; }
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); }
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); }
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; }