xflash: add xflash_multipage_program and documentation
Add a new high-level command to perform multipage writes quickly.
This commit is contained in:
parent
86e753fe37
commit
b398a09a4f
2 changed files with 34 additions and 3 deletions
|
@ -116,6 +116,28 @@ void xflash_page_program(uint32_t addr, uint8_t* data, uint16_t cnt)
|
|||
_CS_HIGH();
|
||||
}
|
||||
|
||||
void xflash_multipage_program(uint32_t addr, uint8_t* data, uint16_t cnt)
|
||||
{
|
||||
while(cnt)
|
||||
{
|
||||
xflash_enable_wr();
|
||||
_CS_LOW();
|
||||
xflash_send_cmdaddr(_CMD_PAGE_PROGRAM, addr);
|
||||
while(1)
|
||||
{
|
||||
// send data
|
||||
_SPI_TX(*(data++));
|
||||
if(!--cnt || !(++addr & 0xFF))
|
||||
{
|
||||
// on a page boundary or end of write
|
||||
_CS_HIGH();
|
||||
xflash_wait_busy();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void xflash_page_program_P(uint32_t addr, uint8_t* data, uint16_t cnt)
|
||||
{
|
||||
_CS_LOW();
|
||||
|
|
|
@ -34,16 +34,25 @@ extern uint8_t xflash_rd_status_reg(void);
|
|||
extern void w25x20cl_wr_status_reg(uint8_t val);
|
||||
#endif
|
||||
extern void xflash_rd_data(uint32_t addr, uint8_t* data, uint16_t cnt);
|
||||
extern void xflash_page_program(uint32_t addr, uint8_t* data, uint16_t cnt);
|
||||
extern void xflash_page_program_P(uint32_t addr, uint8_t* data, uint16_t cnt);
|
||||
|
||||
extern void xflash_sector_erase(uint32_t addr);
|
||||
extern void xflash_block32_erase(uint32_t addr);
|
||||
extern void xflash_block64_erase(uint32_t addr);
|
||||
extern void xflash_chip_erase(void);
|
||||
extern void xflash_page_program(uint32_t addr, uint8_t* data, uint16_t cnt);
|
||||
extern void xflash_rd_uid(uint8_t* uid);
|
||||
extern void xflash_wait_busy(void);
|
||||
|
||||
// write up to a single page of data (256bytes)
|
||||
extern void xflash_page_program(uint32_t addr, uint8_t* data, uint16_t cnt);
|
||||
|
||||
// write up to a single page of data from program memory
|
||||
extern void xflash_page_program_P(uint32_t addr, uint8_t* data, uint16_t cnt);
|
||||
|
||||
// xflash_multipage_program: high-level interface for multi-page writes.
|
||||
// Write any amount of data, chunking writes to page boundaries as needed.
|
||||
// Automatically enables writes and waits for completion.
|
||||
extern void xflash_multipage_program(uint32_t addr, uint8_t* data, uint16_t cnt);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif //defined(__cplusplus)
|
||||
|
|
Loading…
Add table
Reference in a new issue