|
HF-TMC9660 Driver 0.1.0-dev
Hardware Agnostic C++ Driver for the TMC9660
|
Main TMC9660 bootloader interface class. More...
#include <tmc9660_bootloader.hpp>
Public Member Functions | |
| TMC9660Bootloader (CommType &comm) noexcept | |
| Construct a TMC9660Bootloader instance. | |
| bool | setBank (uint8_t bank) noexcept |
| Select the target memory bank for subsequent operations. | |
| bool | setBank (MemoryBank bank) noexcept |
| Select the target register bank using enum (overloaded). | |
| bool | setAddress (uint32_t addr) noexcept |
| Set the address within the current memory bank. | |
| bool | write8 (uint8_t v) noexcept |
| Write a single byte to the previously selected address. | |
| bool | write16 (uint16_t v) noexcept |
| Write a 16-bit word to the previously selected address. | |
| bool | write32 (uint32_t v) noexcept |
| Write a 32-bit word to the previously selected address. | |
| bool | write8Inc (uint8_t v) noexcept |
| Write a single byte and increment address by 1. | |
| bool | write16Inc (uint16_t v) noexcept |
| Write a 16-bit word and increment address by 2. | |
| bool | write32Inc (uint32_t v) noexcept |
| Write a 32-bit word and increment address by 4. | |
| bool | write32IncMultiple (const uint32_t *values, size_t count) noexcept |
| Write multiple 32-bit words starting at the current address. | |
| bool | read8 (uint8_t *value) noexcept |
| Read a single byte from the previously selected address. | |
| bool | read16 (uint16_t *value) noexcept |
| Read a 16-bit word from the previously selected address. | |
| bool | read32 (uint32_t *value) noexcept |
| Read a 32-bit word from the previously selected address. | |
| bool | read8Inc (uint8_t *value) noexcept |
| Read a single byte and increment address by 1. | |
| bool | read16Inc (uint16_t *value) noexcept |
| Read a 16-bit word and increment address by 2. | |
| bool | read32Inc (uint32_t *value) noexcept |
| Read a 32-bit word and increment address by 4. | |
| bool | getBank (uint8_t *bank) noexcept |
| Get the currently selected memory bank. | |
| bool | getAddress (uint32_t *address) noexcept |
| Get the currently selected memory address. | |
| bool | noOp (uint32_t *reply=nullptr) noexcept |
| No operation - retrieve reply from previous command (SPI only). | |
| bool | readAndVerify8 (uint8_t expected, const char *config_name) noexcept |
| Read back and verify an 8-bit value matches the expected value. | |
| bool | readAndVerify16 (uint16_t expected, const char *config_name) noexcept |
| Read back and verify a 16-bit value matches the expected value. | |
| bool | readAndVerify32 (uint32_t expected, const char *config_name) noexcept |
| Read back and verify a 32-bit value matches the expected value. | |
| bool | otpLoad (uint8_t page, OtpLoadResult *result) noexcept |
| Load an OTP (One-Time Programmable) page into the OTP memory bank. | |
| bool | otpLoad (uint8_t page, uint8_t *error_count=nullptr, uint8_t *page_tag=nullptr) noexcept |
| Load an OTP page (legacy method with separate parameters). | |
| bool | otpBurn (uint8_t page, uint8_t page_addr, OtpBurnResult *result) noexcept |
| Permanently burn data to OTP (One-Time Programmable) memory. | |
| bool | otpBurn (uint8_t page, uint8_t page_addr=0) noexcept |
| Permanently burn OTP page (legacy method without detailed results). | |
| bool | otpBurnWithWorkaround (uint8_t page, uint8_t page_addr, OtpBurnResult *result, uint32_t vdrv_wait_ms=1000) noexcept |
| Burn OTP page with Erratum 1 workaround for reliable operation. | |
| bool | checkOtpBurnStatus (bool *result) noexcept |
| Check OTP burn status using Erratum 1 workaround verification. | |
| bool | memIsConfigured (MemoryBank bank, bool *is_configured) noexcept |
| Check if external memory is configured. | |
| bool | memIsConnected (MemoryBank bank, bool *is_connected) noexcept |
| Check if external memory is connected. | |
| bool | memIsBusy (MemoryBank bank, bool *is_busy) noexcept |
| Check if external memory is busy. | |
| bool | flashLoadBuffer (uint8_t offset, uint32_t data) noexcept |
| Load data into internal 6-byte flash command buffer. | |
| bool | flashReadBuffer (uint8_t offset, uint32_t *data) noexcept |
| Read data from internal 6-byte flash command buffer. | |
| bool | flashSendDatagram (uint8_t num_bytes) noexcept |
| Send datagram to SPI flash and receive reply. | |
| bool | flashEraseSector (uint32_t address) noexcept |
| Erase a sector on external SPI flash. | |
| bool | flashReadJedecId (uint8_t *manufacturer_id) noexcept |
| Read JEDEC manufacturer ID from SPI flash. | |
| bool | bootstrapRS485 (uint8_t tx_en_pin, uint8_t pre_delay, uint8_t host_addr, uint8_t device_addr) noexcept |
| Configure RS485 communication (must be first command for RS485). | |
| bool | getInfo (InfoQuery query, uint32_t *value) noexcept |
| Get bootloader information. | |
| bool | getChipType (uint32_t *chip_type) noexcept |
| Get chip type (should return 0x544D0001 for TMC9660). | |
| bool | getBootloaderVersion (BootloaderVersion *version) noexcept |
| Get bootloader version information. | |
| bool | getFeatures (BootloaderFeatures *features) noexcept |
| Get available feature flags. | |
| bool | getGitInfo (GitInfo *git_info) noexcept |
| Get Git version control information. | |
| bool | getChipVersion (uint32_t *version) noexcept |
| Get chip version (silicon revision). | |
| bool | getChipFrequency (uint32_t *frequency) noexcept |
| Get system frequency in MHz. | |
| bool | getConfigMemStart (uint32_t *address) noexcept |
| Get CONFIG memory bank start address. | |
| bool | getConfigMemSize (uint32_t *size) noexcept |
| Get CONFIG memory bank size. | |
| bool | getOtpMemSize (uint32_t *size) noexcept |
| Get OTP memory page size. | |
| bool | getI2cMemSize (uint32_t *size) noexcept |
| Get I2C memory size. | |
| bool | getSpiMemSize (uint32_t *size) noexcept |
| Get SPI memory size. | |
| bool | getPartitionVersion (PartitionVersion *version) noexcept |
| Get partition version information. | |
| bool | getSpiMemPartitions (uint32_t *count) noexcept |
| Get number of SPI memory partitions. | |
| bool | getI2cMemPartitions (uint32_t *count) noexcept |
| Get number of I2C memory partitions. | |
| bool | getChipVariant (uint32_t *variant) noexcept |
| Get chip variant (TMC9660 reports value 2). | |
| bool | getAllBootloaderInfo () noexcept |
| Retrieve and log all available bootloader information. | |
| bool | applyConfiguration (const BootloaderConfig &cfg, bool fail_on_verify_error=true) noexcept |
| Apply all fields of a ::BootloaderConfig. | |
| bool | startMotorControl (bootcfg::BootMode boot_mode=bootcfg::BootMode::Parameter) noexcept |
| Start the motor control system and exit bootloader mode. | |
Private Member Functions | |
| bool | sendCommand (uint8_t cmd, uint32_t value, uint32_t *reply=nullptr) noexcept |
| Send a bootloader command and optionally receive a reply. | |
| bool | sendCommandSPI (uint8_t cmd, uint32_t value, uint32_t *reply) noexcept |
| Send a bootloader command via SPI interface. | |
| bool | sendCommandUART (uint8_t cmd, uint32_t value, uint32_t *reply) noexcept |
| Send a bootloader command via UART interface. | |
Private Attributes | |
| CommType & | comm_ |
| uint8_t | deviceAddr_ |
| Device address for UART protocol. | |
| uint8_t | hostAddr_ |
| Host address for UART protocol. | |
Main TMC9660 bootloader interface class.
This class provides comprehensive bootloader functionality for the TMC9660 including memory operations, configuration management, OTP programming, and system initialization. The bootloader is essential for configuring the TMC9660 before transitioning to parameter mode operation.
| CommType | The communication interface type (must inherit from SpiCommInterface<CommType> or UartCommInterface<CommType>) |
|
explicitnoexcept |
Construct a TMC9660Bootloader instance.
Initializes the bootloader with the specified communication interface and sets default UART addresses as per the TMC9660 specification.
| comm | Reference to the communication interface for bootloader commands |
|
noexcept |
Apply all fields of a ::BootloaderConfig.
Apply all fields of a BootloaderConfig to the TMC9660.
This function applies a complete bootloader configuration by writing all configuration structures to their respective registers in the CONFIG memory bank. It provides a convenient single-call interface for comprehensive system configuration.
| cfg | Configuration to apply |
| fail_on_verify_error | If true, return false on read-back verification failure; if false, log warning but continue |
This method performs the complete bootloader configuration sequence by writing all configuration registers in the correct order. It handles the complex register dependencies and ensures proper initialization.
The configuration is applied in the following order:
| cfg | Complete bootloader configuration to apply |
| failOnVerifyError | If true, return false on read-back verification failure; if false, log warning but continue |
Apply complete bootloader configuration with proper register sequencing.
This method performs the complete bootloader configuration sequence by writing all configuration registers in the correct order. It handles complex register dependencies and ensures proper initialization of the TMC9660 system.
The configuration is applied in a specific order to handle dependencies:
| cfg | Complete bootloader configuration structure to apply |
| failOnVerifyError | If true, return false on read-back verification failure; if false, log warning but continue with configuration |
|
noexcept |
Configure RS485 communication (must be first command for RS485).
Initializes RS485 half-duplex communication parameters. This command must be sent as the first command when using RS485 communication interface. It configures the transmit enable pin and timing parameters.
| tx_en_pin | GPIO pin for TX_EN (1=GPIO8, 2=GPIO2) |
| pre_delay | Delay between TX_EN assertion and TX start |
| host_addr | Host address |
| device_addr | Device address |
Check OTP burn status using Erratum 1 workaround verification.
Verifies the result of an OTP burn operation by checking multiple status indicators. Implements Erratum 1 workaround for reliable status verification.
| result | Pointer to receive true if burn was successful |
Erase a sector on external SPI flash.
Performs a sector erase operation on the external SPI flash memory at the specified address. This prepares the sector for new data programming.
| address | 24-bit sector address |
Load data into internal 6-byte flash command buffer.
Loads data into the TMC9660's internal flash command buffer, which is used to prepare SPI flash commands before transmission. The buffer can hold up to 6 bytes of command and address data.
| offset | Byte offset in buffer (0-5) |
| data | 24-bit data to load (bits 23-0) |
Read data from internal 6-byte flash command buffer.
Reads data from the TMC9660's internal flash command buffer. This can be used to verify buffer contents or read response data from flash operations.
| offset | Byte offset in buffer (0-5) |
| data | Returns 24-bit data read (bits 23-0) |
Read JEDEC manufacturer ID from SPI flash.
Reads the JEDEC manufacturer ID from the external SPI flash device. This can be used to identify the flash chip type and verify connectivity.
| manufacturer_id | Returns manufacturer ID |
Send datagram to SPI flash and receive reply.
Transmits the specified number of bytes from the internal flash command buffer to the external SPI flash device and receives the response.
| num_bytes | Number of bytes to transmit (1-6) |
Get the currently selected memory address.
Retrieves the memory address that was last set via setAddress() within the currently selected bank. Useful for tracking address pointer state.
| address | Pointer to receive the current address |
Retrieve and log all available bootloader information.
This function queries all GET_INFO commands and logs the results. Useful for debugging and verifying chip configuration.
Information retrieved:
Get the currently selected memory bank.
Retrieves the memory bank number that was last selected via setBank(). Useful for verifying the current bank configuration.
| bank | Pointer to receive the current bank number (0-5) |
|
noexcept |
Get bootloader version information.
Retrieves and parses the bootloader version information from the TMC9660. The version is returned in major.minor format for easy interpretation.
| version | Returns parsed version information |
Retrieves the bootloader version information including major and minor version numbers. This is useful for compatibility checking and debugging.
| version | Pointer to store the parsed version information |
|
inlinenoexcept |
Get system frequency in MHz.
Retrieves the current system clock frequency in MHz. This reflects the actual operating frequency after PLL and divider configurations.
| frequency | Returns frequency in MHz |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Get chip version (silicon revision).
Retrieves the silicon revision number of the TMC9660 chip. This information is useful for identifying chip variants and applying silicon-specific workarounds.
| version | Returns chip version |
|
inlinenoexcept |
Get CONFIG memory bank size.
Retrieves the size of the CONFIG memory bank in bytes. This indicates how much configuration space is available for bootloader settings.
| size | Returns memory size |
|
inlinenoexcept |
Get CONFIG memory bank start address.
Retrieves the starting address of the CONFIG memory bank (bank 5). This is typically 0x00020000 for TMC9660.
| address | Returns start address |
|
noexcept |
Get available feature flags.
Retrieves feature flags indicating which capabilities are supported by the bootloader hardware, including available memory types and interfaces.
| features | Returns parsed feature flags |
Get Git version control information.
Retrieves Git commit hash and dirty bit from the bootloader firmware, indicating the exact firmware build version and development state.
| git_info | Returns parsed Git information |
|
inlinenoexcept |
Get number of I2C memory partitions.
Retrieves the number of partitions available in the connected I2C EEPROM memory for storing TMCL scripts and configuration data.
| count | Returns number of partitions |
|
inlinenoexcept |
Get I2C memory size.
Retrieves the total size of connected I2C EEPROM memory in bytes. Returns 0 if no I2C EEPROM is configured or connected.
| size | Returns I2C memory size |
Get bootloader information.
Get bootloader information using the specified query type.
Generic function to query various types of system information from the bootloader. Use the specific convenience methods for typed access to parsed information structures.
| query | Information type to query |
| value | Returns queried value |
Queries various information about the TMC9660 bootloader including version, features, memory sizes, and chip identification. This is useful for debugging and verifying the bootloader configuration.
| query | Information type to query (see InfoQuery enum) |
| value | Pointer to store the queried value |
|
inlinenoexcept |
Get OTP memory page size.
Retrieves the size of a single OTP (One-Time Programmable) memory page in bytes. This is the unit size for OTP burn operations.
| size | Returns OTP page size |
|
noexcept |
Get partition version information.
Retrieves the version of the external memory partition format used for storing TMCL scripts and parameters in external memory.
| version | Returns parsed partition version |
|
inlinenoexcept |
Get number of SPI memory partitions.
Retrieves the number of partitions available in the connected SPI flash memory for storing TMCL scripts and configuration data.
| count | Returns number of partitions |
|
inlinenoexcept |
Get SPI memory size.
Retrieves the total size of connected SPI flash memory in bytes. Returns 0 if no SPI flash is configured or connected.
| size | Returns SPI memory size |
|
noexcept |
Check if external memory is busy.
Verifies whether the specified external memory device is currently busy with an operation (e.g., write cycle, erase operation).
| bank | Memory bank to check |
| is_busy | Returns true if busy |
|
noexcept |
Check if external memory is configured.
Verifies whether the specified external memory bank has been properly configured in the bootloader settings. Configuration is required before the memory can be accessed.
| bank | Memory bank to check |
| is_configured | Returns true if configured |
|
noexcept |
Check if external memory is connected.
Verifies whether the specified external memory device is physically connected and responding to communication attempts.
| bank | Memory bank to check |
| is_connected | Returns true if connected |
No operation - retrieve reply from previous command (SPI only).
Due to SPI protocol, replies are delayed by one transaction. This command sends a NO_OP to retrieve the reply from the previous command. Primarily used internally by the bootloader implementation.
| reply | Optional pointer to store the 32-bit reply value |
|
noexcept |
Permanently burn data to OTP (One-Time Programmable) memory.
Permanently burn the given OTP page.
WARNING: OTP burn operations are IRREVERSIBLE! Once a page is burned, it cannot be modified. The burn operation requires specific voltage conditions and timing to succeed.
| page | OTP page number to burn (bits 7-0) |
| page_addr | OTP page address to write (bits 15-8) |
| result | Pointer to receive detailed burn result with error information |
Burns (programs) the specified OTP page with the given page address. This operation is irreversible and can only be performed once per page. The OTP memory is used for storing permanent configuration data.
| page | OTP page number to burn (0-255) |
| pageAddr | OTP page address to write (0-255) |
| result | Pointer to store the detailed burn result with error information |
Permanently burn OTP page (legacy method without detailed results).
Simplified version that only returns boolean success/failure without error details. Use the overload with OtpBurnResult for detailed error information.
| page | OTP page number to burn (bits 7-0) |
| page_addr | OTP page address to write (bits 15-8) |
|
noexcept |
Burn OTP page with Erratum 1 workaround for reliable operation.
Perform OTP burn operation with Erratum 1 workaround for TMC9660.
Implements a workaround for silicon Erratum 1 that improves reliability of OTP burn operations. The workaround waits for VDRV voltage to stabilize before and after the burn operation.
| page | OTP page number to burn (bits 7-0) |
| page_addr | OTP page address to write (bits 15-8) |
| result | Pointer to receive detailed burn result with error information |
| vdrv_wait_ms | Wait time for VDRV voltage to drop (default 1000ms for 10uF capacitor) |
This method implements a complex workaround for TMC9660 Erratum 1, which affects OTP (One-Time Programmable) memory burning operations. The workaround involves a specific sequence of register operations to ensure proper OTP programming.
The workaround sequence:
This workaround is essential for reliable OTP programming and must be used instead of the standard OTP burn procedure when working with affected TMC9660 silicon revisions.
| page | OTP page number to burn |
| pageAddr | Address within the OTP page |
| result | Pointer to store burn operation result |
| vdrvWaitMs | Milliseconds to wait for VDRV voltage drop (typically 100-200ms) |
|
noexcept |
Load an OTP (One-Time Programmable) page into the OTP memory bank.
Load an OTP page into the OTP memory bank.
Loads a previously programmed OTP page into RAM for reading. Returns information about the loaded page including the page tag and any bit errors detected.
| page | OTP page number to load (0-based) |
| result | Pointer to receive parsed OTP load result (error count + page tag) |
Loads the specified OTP (One-Time Programmable) page into the OTP memory bank for reading or verification. The OTP memory contains factory-programmed data that cannot be modified by the user.
| page | OTP page number to load (0-255) |
| result | Pointer to store the OTP load result including error count and page tag |
|
noexcept |
Load an OTP page (legacy method with separate parameters).
Legacy overload that returns error count and page tag as separate parameters instead of a structured result object.
| page | OTP page number to load |
| error_count | Optional pointer to receive bit error count (bits 15-8) |
| page_tag | Optional pointer to receive page tag (bits 7-0) |
Read a 16-bit word from the previously selected address.
Reads a 16-bit value from the current bank and address without modifying the address pointer. Little-endian byte order.
| value | Pointer to receive the 16-bit value read |
Reads a 16-bit value from the current address in the selected memory bank. The address pointer is not incremented after the read operation.
| value | Pointer to store the 16-bit value read |
Read a 16-bit word and increment address by 2.
Reads a 16-bit value and automatically increments the address pointer by 2. Useful for reading sequential data arrays.
| value | Pointer to receive the 16-bit value read |
Read a 32-bit word from the previously selected address.
Reads a 32-bit value from the current bank and address without modifying the address pointer. Little-endian byte order.
| value | Pointer to receive the 32-bit value read |
Reads a 32-bit value from the current address in the selected memory bank. The address pointer is not incremented after the read operation.
| value | Pointer to store the 32-bit value read |
Read a 32-bit word and increment address by 4.
Reads a 32-bit value and automatically increments the address pointer by 4. Commonly used for reading configuration registers and data arrays.
| value | Pointer to receive the 32-bit value read |
Read a single byte from the previously selected address.
Reads an 8-bit value from the current bank and address without modifying the address pointer.
| value | Pointer to receive the 8-bit value read |
Reads an 8-bit value from the current address in the selected memory bank. The address pointer is not incremented after the read operation.
| value | Pointer to store the 8-bit value read |
Read a single byte and increment address by 1.
Reads an 8-bit value and automatically increments the address pointer. Useful for reading sequential data arrays.
| value | Pointer to receive the 8-bit value read |
Read back and verify a 16-bit value matches the expected value.
Performs a read operation and compares the returned value with the expected value. Useful for verification after configuration writes. Logs the result for debugging purposes.
| expected | The expected 16-bit value to match |
| config_name | Human-readable configuration name for logging |
Read back and verify a 32-bit value matches the expected value.
Performs a read operation and compares the returned value with the expected value. Useful for verification after configuration writes. Logs the result for debugging purposes.
| expected | The expected 32-bit value to match |
| config_name | Human-readable configuration name for logging |
Read back and verify an 8-bit value matches the expected value.
Performs a read operation and compares the returned value with the expected value. Useful for verification after configuration writes. Logs the result for debugging purposes.
| expected | The expected 8-bit value to match |
| config_name | Human-readable configuration name for logging |
|
privatenoexcept |
Send a bootloader command and optionally receive a reply.
This method dispatches the command to the appropriate protocol handler based on the communication interface type (SPI or UART). It provides a unified interface for all bootloader commands.
| cmd | Bootloader command code to send |
| value | 32-bit value to send with the command |
| reply | Optional pointer to store the 32-bit reply value |
|
privatenoexcept |
Send a bootloader command via SPI interface.
Implements the SPI bootloader protocol which requires two transactions:
This is standard SPI behavior where replies are delayed by one transaction.
| cmd | Bootloader command code to send |
| value | 32-bit value to send with the command |
| reply | Optional pointer to store the 32-bit reply value |
|
privatenoexcept |
Send a bootloader command via UART interface.
Implements the UART bootloader protocol which uses a single transaction: Send command and receive reply immediately. The UART protocol includes CRC-8 checksum verification for data integrity.
| cmd | Bootloader command code to send |
| value | 32-bit value to send with the command |
| reply | Optional pointer to store the 32-bit reply value |
Set the address within the current memory bank.
Sets the memory address for subsequent read/write operations within the currently selected bank. Addresses are bank-relative (offset within bank).
| addr | Memory address within current bank |
Sets the address pointer for subsequent read/write operations within the currently selected memory bank. The address is bank-specific.
| addr | 32-bit address within the current bank |
|
inlinenoexcept |
Select the target register bank using enum (overloaded).
Convenience overload that accepts a MemoryBank enum instead of raw bank number. Automatically converts to the numeric value.
| bank | Memory bank enum value |
Select the target memory bank for subsequent operations.
Select the target memory bank for bootloader operations.
Sets which memory bank (RAM, OTP, SPI Flash, I2C EEPROM, or CONFIG) will be accessed by subsequent read/write operations. The bank must be selected before performing any memory access operations.
| bank | Memory bank number (0-5, see MemoryBank enum) |
Sets the memory bank that subsequent read/write operations will target. Valid banks include RAM, OTP, SPI Flash, I2C EEPROM, and CONFIG.
| bank | Memory bank number (0-5) |
|
noexcept |
Start the motor control system and exit bootloader mode.
This function writes START_MOTOR_CTRL=1 to the BOOT_CONFIG register, causing the bootloader to immediately exit and launch the motor control application based on the current BOOT_MODE setting.
⚠️ CRITICAL: After calling this function, the bootloader will no longer respond to commands. All bootloader configuration must be completed BEFORE calling this function.
| boot_mode | Motor control mode to start (Register or Parameter mode) |
This function writes START_MOTOR_CTRL=1 to the BOOT_CONFIG register, causing the bootloader to immediately exit and launch the motor control application based on the current BOOT_MODE setting.
| bootMode | Motor control mode to start (Register or Parameter mode) |
Write a 16-bit word to the previously selected address.
Writes a 16-bit value to the current bank and address. Little-endian byte order. Does not increment the address pointer.
| v | 16-bit value to write |
Writes a 16-bit value to the current address in the selected memory bank. The address pointer is not incremented after the write operation.
| v | 16-bit value to write |
Write a 16-bit word and increment address by 2.
Writes a 16-bit value and automatically increments the address pointer by 2. Useful for writing sequential data arrays.
| v | 16-bit value to write |
Write a 32-bit word to the previously selected address.
Writes a 32-bit value to the current bank and address. Little-endian byte order. Does not increment the address pointer.
| v | 32-bit value to write |
Writes a 32-bit value to the current address in the selected memory bank. The address pointer is not incremented after the write operation.
| v | 32-bit value to write |
Write a 32-bit word and increment address by 4.
Writes a 32-bit value and automatically increments the address pointer by 4. Commonly used for writing configuration registers and data arrays.
| v | 32-bit value to write |
Write multiple 32-bit words starting at the current address.
Writes multiple consecutive 32-bit words using WRITE_32_INC commands. The address pointer is incremented automatically for each word.
| values | Pointer to array of 32-bit values to write |
| count | Number of 32-bit words to write |
Writes an array of 32-bit values using the WRITE_32_INC command, which automatically increments the address pointer after each write. This is useful for writing configuration blocks or data arrays.
| vals | Pointer to array of 32-bit values to write |
| count | Number of 32-bit values to write |
Write a single byte to the previously selected address.
Writes an 8-bit value to the current bank and address. Does not increment the address pointer.
| v | 8-bit value to write |
Writes an 8-bit value to the current address in the selected memory bank. The address pointer is not incremented after the write operation.
| v | 8-bit value to write |
Write a single byte and increment address by 1.
Writes an 8-bit value and automatically increments the address pointer. Useful for writing sequential data arrays.
| v | 8-bit value to write |
|
private |
|
private |
Device address for UART protocol.
|
private |
Host address for UART protocol.