diff options
| author | Fran莽ois Cartegnie <281376+fcartegnie@users.noreply.github.com> | 2024-06-06 11:22:09 +0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-06 11:22:09 +0700 |
| commit | f6d84a1ead1a57574c45bb80b6fd450c5b784e09 (patch) | |
| tree | ccfe2db3861197bc29eff52e53a814d909501863 /CH5xx_ble_firmware_library/StdPeriphDriver/inc/ISP583.h | |
| parent | d641c0de85f6ccf73c8c99012f1a5c4e28af54dc (diff) | |
| parent | 90cdb61063b408aa4d8ba0c1e3c36d804f69f61a (diff) | |
Merge pull request #10 from kienvo/led-scan
Add basic Charlieplexing scan
Diffstat (limited to 'CH5xx_ble_firmware_library/StdPeriphDriver/inc/ISP583.h')
| -rw-r--r-- | CH5xx_ble_firmware_library/StdPeriphDriver/inc/ISP583.h | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/CH5xx_ble_firmware_library/StdPeriphDriver/inc/ISP583.h b/CH5xx_ble_firmware_library/StdPeriphDriver/inc/ISP583.h new file mode 100644 index 0000000..e228c07 --- /dev/null +++ b/CH5xx_ble_firmware_library/StdPeriphDriver/inc/ISP583.h @@ -0,0 +1,190 @@ +/* CH583 Flash-ROM & Data-Flash */
+/* Website: http://wch.cn */
+/* Email: tech@wch.cn */
+/* Author: W.ch 2020.06 */
+/* V1.0 FlashROM library for USER/BOOT */
+/* for the target in USER code area on the chip divided into USER code area and BOOT area */
+/* 用于具有用户代码区和引导区的芯片、操作目标为用户代码区的情况,
+ 可以在用户代码中被调用(IAP,擦写自身),也可以在引导代码中被调用(更新用户代码) */
+
+/* Flash-ROM feature:
+ for store program code, support block erasing, dword and page writing, dword verifying, unit for Length is byte,
+ minimal quantity for write or verify is one dword (4-bytes),
+ 256 bytes/page for writing, FLASH_ROM_WRITE support one dword or more dword writing, but multiple of 256 is the best,
+ 4KB (4096 bytes) bytes/block for erasing, so multiple of 4096 is the best */
+
+/* Data-Flash(EEPROM) feature:
+ for store data, support block erasing, byte and page writing, byte reading,
+ minimal quantity for write or read is one byte,
+ 256 bytes/page for writing, EEPROM_WRITE support one byte or more byte writing, but multiple of 256 is the best,
+ 0.25KB/4KB (256/4096 bytes) bytes/block for erasing, so multiple of 256 or 4096 is the best */
+
+
+#ifndef EEPROM_PAGE_SIZE
+#define EEPROM_PAGE_SIZE 256 // Flash-ROM & Data-Flash page size for writing
+#define EEPROM_BLOCK_SIZE 4096 // Flash-ROM & Data-Flash block size for erasing
+#define EEPROM_MIN_ER_SIZE EEPROM_PAGE_SIZE // Data-Flash minimal size for erasing
+//#define EEPROM_MIN_ER_SIZE EEPROM_BLOCK_SIZE // Flash-ROM minimal size for erasing
+#define EEPROM_MIN_WR_SIZE 1 // Data-Flash minimal size for writing
+#define EEPROM_MAX_SIZE 0x8000 // Data-Flash maximum size, 32KB
+#endif
+#ifndef FLASH_MIN_WR_SIZE
+#define FLASH_MIN_WR_SIZE 4 // Flash-ROM minimal size for writing
+#endif
+#ifndef FLASH_ROM_MAX_SIZE
+#define FLASH_ROM_MAX_SIZE 0x070000 // Flash-ROM maximum program size, 448KB
+#endif
+
+#ifndef CMD_FLASH_ROM_SW_RESET
+// CMD_* for caller from FlashROM or RAM, auto execute CMD_FLASH_ROM_SW_RESET before command
+
+#define CMD_FLASH_ROM_START_IO 0x00 // start FlashROM I/O, without parameter
+#define CMD_FLASH_ROM_SW_RESET 0x04 // software reset FlashROM, without parameter
+#define CMD_GET_ROM_INFO 0x06 // get information from FlashROM, parameter @Address,Buffer
+#define CMD_GET_UNIQUE_ID 0x07 // get 64 bit unique ID, parameter @Buffer
+#define CMD_FLASH_ROM_PWR_DOWN 0x0D // power-down FlashROM, without parameter
+#define CMD_FLASH_ROM_PWR_UP 0x0C // power-up FlashROM, without parameter
+#define CMD_FLASH_ROM_LOCK 0x08 // lock(protect)/unlock FlashROM data block, return 0 if success, parameter @StartAddr
+// StartAddr: 0=unlock all, 1=lock boot code, 3=lock all code and data
+
+#define CMD_EEPROM_ERASE 0x09 // erase Data-Flash block, return 0 if success, parameter @StartAddr,Length
+#define CMD_EEPROM_WRITE 0x0A // write Data-Flash data block, return 0 if success, parameter @StartAddr,Buffer,Length
+#define CMD_EEPROM_READ 0x0B // read Data-Flash data block, parameter @StartAddr,Buffer,Length
+#define CMD_FLASH_ROM_ERASE 0x01 // erase FlashROM block, return 0 if success, parameter @StartAddr,Length
+#define CMD_FLASH_ROM_WRITE 0x02 // write FlashROM data block, minimal block is dword, return 0 if success, parameter @StartAddr,Buffer,Length
+#define CMD_FLASH_ROM_VERIFY 0x03 // read FlashROM data block, minimal block is dword, return 0 if success, parameter @StartAddr,Buffer,Length
+#endif
+
+#define ROM_CFG_MAC_ADDR 0x7F018 // address for MAC address information
+#define ROM_CFG_BOOT_INFO 0x7DFF8 // address for BOOT information
+
+/**
+ * @brief execute Flash/EEPROM command, caller from FlashROM or RAM
+ *
+ * @param cmd - CMD_* for caller from FlashROM or RAM.
+ * @param StartAddr - Address of the data to be process.
+ * @param Buffer - Pointer to the buffer where data should be process, Must be aligned to 4 bytes.
+ * @param Length - Size of data to be process, in bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+extern uint32_t FLASH_EEPROM_CMD( uint8_t cmd, uint32_t StartAddr, void *Buffer, uint32_t Length );
+
+/**
+ * @brief start FlashROM I/O
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define FLASH_ROM_START_IO( ) FLASH_EEPROM_CMD( CMD_FLASH_ROM_START_IO, 0, NULL, 0 )
+
+/**
+ * @brief software reset FlashROM
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define FLASH_ROM_SW_RESET( ) FLASH_EEPROM_CMD( CMD_FLASH_ROM_SW_RESET, 0, NULL, 0 )
+
+/**
+ * @brief get 6 bytes MAC address
+ *
+ * @param Buffer - Pointer to the buffer where data should be stored, Must be aligned to 4 bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define GetMACAddress(Buffer) FLASH_EEPROM_CMD( CMD_GET_ROM_INFO, ROM_CFG_MAC_ADDR, Buffer, 0 )
+
+/**
+ * @brief get 8 bytes BOOT information
+ *
+ * @param Buffer - Pointer to the buffer where data should be stored, Must be aligned to 4 bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define GET_BOOT_INFO(Buffer) FLASH_EEPROM_CMD( CMD_GET_ROM_INFO, ROM_CFG_BOOT_INFO, Buffer, 0 )
+
+/**
+ * @brief get 64 bit unique ID
+ *
+ * @param Buffer - Pointer to the buffer where data should be stored, Must be aligned to 4 bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define GET_UNIQUE_ID(Buffer) FLASH_EEPROM_CMD( CMD_GET_UNIQUE_ID, 0, Buffer, 0 )
+
+/**
+ * @brief power-down FlashROM
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define FLASH_ROM_PWR_DOWN( ) FLASH_EEPROM_CMD( CMD_FLASH_ROM_PWR_DOWN, 0, NULL, 0 )
+
+/**
+ * @brief power-up FlashROM
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define FLASH_ROM_PWR_UP( ) FLASH_EEPROM_CMD( CMD_FLASH_ROM_PWR_UP, 0, NULL, 0 )
+
+/**
+ * @brief read Data-Flash data block
+ *
+ * @param StartAddr - Address of the data to be read.
+ * @param Buffer - Pointer to the buffer where data should be stored, Must be aligned to 4 bytes.
+ * @param Length - Size of data to be read, in bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define EEPROM_READ(StartAddr,Buffer,Length) FLASH_EEPROM_CMD( CMD_EEPROM_READ, StartAddr, Buffer, Length )
+
+/**
+ *
+ * @param StartAddr - Address of the data to be erased.
+ * @param Length - Size of data to be erased, in bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define EEPROM_ERASE(StartAddr,Length) FLASH_EEPROM_CMD( CMD_EEPROM_ERASE, StartAddr, NULL, Length )
+
+/**
+ * @brief write Data-Flash data block
+ *
+ * @param StartAddr - Address of the data to be written.
+ * @param Buffer - Pointer to the source buffer, Must be aligned to 4 bytes.
+ * @param Length - Size of data to be written, in bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define EEPROM_WRITE(StartAddr,Buffer,Length) FLASH_EEPROM_CMD( CMD_EEPROM_WRITE, StartAddr, Buffer, Length )
+
+/**
+ * @brief erase FlashROM block
+ *
+ * @param StartAddr - Address of the data to be erased.
+ * @param Length - Size of data to be erased, in bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define FLASH_ROM_ERASE(StartAddr,Length) FLASH_EEPROM_CMD( CMD_FLASH_ROM_ERASE, StartAddr, NULL, Length )
+
+/**
+ * @brief write FlashROM data block, minimal block is dword.
+ *
+ * @param StartAddr - Address of the data to be written.
+ * @param Buffer - Pointer to the source buffer, Must be aligned to 4 bytes.
+ * @param Length - Size of data to be written, in bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define FLASH_ROM_WRITE(StartAddr,Buffer,Length) FLASH_EEPROM_CMD( CMD_FLASH_ROM_WRITE, StartAddr, Buffer, Length )
+
+/**
+ * @brief verify FlashROM data block, minimal block is dword.
+ *
+ * @param StartAddr - Address of the data to verify.
+ * @param Buffer - Pointer to the source buffer, Must be aligned to 4 bytes.
+ * @param Length - Size of data to verify, in bytes.
+ *
+ * @return 0-SUCCESS (!0)-FAILURE
+ */
+#define FLASH_ROM_VERIFY(StartAddr,Buffer,Length) FLASH_EEPROM_CMD( CMD_FLASH_ROM_VERIFY, StartAddr, Buffer, Length )
+
|