SPI Flash AT45DBXXXD
Fork of at45db161d by
Diff: at45db161d.cpp
- Revision:
- 4:943690efda8b
- Parent:
- 3:82157896d90d
- Child:
- 5:ef7247c6f073
--- a/at45db161d.cpp Thu Mar 05 18:07:15 2015 +0800 +++ b/at45db161d.cpp Fri Mar 06 09:03:45 2015 +0800 @@ -152,7 +152,8 @@ if (!low) { spi_transfer(0x00); } } -void ATD45DB161D::read(int addr, char *buf, int len) { +void ATD45DB161D::read(uint16_t addr, void *ptr, uint16_t len) { + uint8_t *buf = reinterpret_cast<uint8_t*>(ptr); int i; PageToBuffer(addr / _bytes, 1); BufferRead(1, addr % _bytes, 1); @@ -161,13 +162,16 @@ } } -void ATD45DB161D::write(int addr, char *buf, int len) { +void ATD45DB161D::write(uint16_t addr, void *ptr, uint16_t len) { + uint8_t *buf = reinterpret_cast<uint8_t*>(ptr); uint16_t i; while (len > 0) { BufferWrite(2, addr % _bytes); - for (i = 0; i < _bytes && len-- > 0; i++) { + uint16_t wlen = (_bytes < len ? _bytes : len); + for (i = 0; i < wlen; i++) { _spi.write(*buf++); } + len -= wlen; BufferToPage(2, addr / _bytes, 1); addr += _bytes; }