Part Number: MSP430FR6007
Hi There,
I hat this topic, unfortunately it was closed: MSP430FR6007: crc_table function - MSP low-power microcontroller forum - MSP low-power microcontrollers - TI E2E support forums
I boiled it now down to the 20 bit address room, my dma feeder works when Im 64kb address room in relation with the CRC module,
Unfortunately when I get in to extended address room 0x10000 it kills the system:
Basic question: Does the MSP430FR6007 DMA module support the extended address room?
DMA_initParam cfg = {
DMA_CHANNEL_0, // channelSelect
DMA_TRANSFER_BLOCK, // transferModeSelect
static_cast<uint16_t>(length), // transferSize
DMA_TRIGGERSOURCE_0, // triggerSourceSelect
DMA_SIZE_SRCBYTE_DSTBYTE, // transferUnitSelect
DMA_TRIGGER_RISINGEDGE // triggerTypeSelect
};
DMA_init(&cfg);
// Use proper 20-bit address handling
// Convert pointers to 32-bit first to avoid truncation
uint32_t volatile src_addr = reinterpret_cast<uint32_t>(src);
uint32_t volatile dst_addr = reinterpret_cast<uint32_t>(dst);
// Set the Source Address (20-bit)
__data20_write_long((uint32_t)&DMA0SA, src_addr & 0xFFFFF);
// Reset bits before setting them
HWREG16(DMA_BASE + DMA_CHANNEL_0 + OFS_DMA0CTL) &= ~(DMASRCINCR_3);
HWREG16(DMA_BASE + DMA_CHANNEL_0 + OFS_DMA0CTL) |= DMA_DIRECTION_INCREMENT;
// Set the Destination Address (20-bit)
__data20_write_long((uint32_t)&DMA0DA, dst_addr & 0xFFFFF);
HWREG16(DMA_BASE + DMA_CHANNEL_0 + OFS_DMA0CTL) &= ~(DMADSTINCR_3);
HWREG16(DMA_BASE + DMA_CHANNEL_0 + OFS_DMA0CTL) |= (DMA_DIRECTION_UNCHANGED << 2);
// Clear DMA interrupt flag and start transfer
DMA0CTL &= ~DMAIFG;
DMA_enableTransfers(DMA_CHANNEL_0);
DMA_startTransfer(DMA_CHANNEL_0);
// Poll for completion
while (!(DMA0CTL & DMAIFG))
{
__no_operation();
}
DMA_disableTransfers(DMA_CHANNEL_0);