xflash: remove some duplication
This commit is contained in:
parent
5ae8bad0ba
commit
86e753fe37
|
|
@ -90,13 +90,18 @@ void w25x20cl_wr_status_reg(uint8_t val)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void xflash_rd_data(uint32_t addr, uint8_t* data, uint16_t cnt)
|
static void xflash_send_cmdaddr(uint8_t cmd, uint32_t addr)
|
||||||
{
|
{
|
||||||
_CS_LOW();
|
_SPI_TX(cmd); // send command 0x03
|
||||||
_SPI_TX(_CMD_RD_DATA); // send command 0x03
|
|
||||||
_SPI_TX(((uint8_t*)&addr)[2]); // send addr bits 16..23
|
_SPI_TX(((uint8_t*)&addr)[2]); // send addr bits 16..23
|
||||||
_SPI_TX(((uint8_t*)&addr)[1]); // send addr bits 8..15
|
_SPI_TX(((uint8_t*)&addr)[1]); // send addr bits 8..15
|
||||||
_SPI_TX(((uint8_t*)&addr)[0]); // send addr bits 0..7
|
_SPI_TX(((uint8_t*)&addr)[0]); // send addr bits 0..7
|
||||||
|
}
|
||||||
|
|
||||||
|
void xflash_rd_data(uint32_t addr, uint8_t* data, uint16_t cnt)
|
||||||
|
{
|
||||||
|
_CS_LOW();
|
||||||
|
xflash_send_cmdaddr(_CMD_RD_DATA, addr);
|
||||||
while (cnt--) // receive data
|
while (cnt--) // receive data
|
||||||
*(data++) = _SPI_RX();
|
*(data++) = _SPI_RX();
|
||||||
_CS_HIGH();
|
_CS_HIGH();
|
||||||
|
|
@ -105,10 +110,7 @@ void xflash_rd_data(uint32_t addr, uint8_t* data, uint16_t cnt)
|
||||||
void xflash_page_program(uint32_t addr, uint8_t* data, uint16_t cnt)
|
void xflash_page_program(uint32_t addr, uint8_t* data, uint16_t cnt)
|
||||||
{
|
{
|
||||||
_CS_LOW();
|
_CS_LOW();
|
||||||
_SPI_TX(_CMD_PAGE_PROGRAM); // send command 0x02
|
xflash_send_cmdaddr(_CMD_PAGE_PROGRAM, addr);
|
||||||
_SPI_TX(((uint8_t*)&addr)[2]); // send addr bits 16..23
|
|
||||||
_SPI_TX(((uint8_t*)&addr)[1]); // send addr bits 8..15
|
|
||||||
_SPI_TX(((uint8_t*)&addr)[0]); // send addr bits 0..7
|
|
||||||
while (cnt--) // send data
|
while (cnt--) // send data
|
||||||
_SPI_TX(*(data++));
|
_SPI_TX(*(data++));
|
||||||
_CS_HIGH();
|
_CS_HIGH();
|
||||||
|
|
@ -117,10 +119,7 @@ void xflash_page_program(uint32_t addr, uint8_t* data, uint16_t cnt)
|
||||||
void xflash_page_program_P(uint32_t addr, uint8_t* data, uint16_t cnt)
|
void xflash_page_program_P(uint32_t addr, uint8_t* data, uint16_t cnt)
|
||||||
{
|
{
|
||||||
_CS_LOW();
|
_CS_LOW();
|
||||||
_SPI_TX(_CMD_PAGE_PROGRAM); // send command 0x02
|
xflash_send_cmdaddr(_CMD_PAGE_PROGRAM, addr);
|
||||||
_SPI_TX(((uint8_t*)&addr)[2]); // send addr bits 16..23
|
|
||||||
_SPI_TX(((uint8_t*)&addr)[1]); // send addr bits 8..15
|
|
||||||
_SPI_TX(((uint8_t*)&addr)[0]); // send addr bits 0..7
|
|
||||||
while (cnt--) // send data
|
while (cnt--) // send data
|
||||||
_SPI_TX(pgm_read_byte(data++));
|
_SPI_TX(pgm_read_byte(data++));
|
||||||
_CS_HIGH();
|
_CS_HIGH();
|
||||||
|
|
@ -129,10 +128,7 @@ void xflash_page_program_P(uint32_t addr, uint8_t* data, uint16_t cnt)
|
||||||
void xflash_erase(uint8_t cmd, uint32_t addr)
|
void xflash_erase(uint8_t cmd, uint32_t addr)
|
||||||
{
|
{
|
||||||
_CS_LOW();
|
_CS_LOW();
|
||||||
_SPI_TX(cmd); // send command 0x20
|
xflash_send_cmdaddr(cmd, addr);
|
||||||
_SPI_TX(((uint8_t*)&addr)[2]); // send addr bits 16..23
|
|
||||||
_SPI_TX(((uint8_t*)&addr)[1]); // send addr bits 8..15
|
|
||||||
_SPI_TX(((uint8_t*)&addr)[0]); // send addr bits 0..7
|
|
||||||
_CS_HIGH();
|
_CS_HIGH();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue