nRF54L15 AAR unknown output DMA job list structure

I'm trying to use AAR peripheral, but I don't know the structure of output DMA job list, as it's not defined in the datasheet. I was trying to use one job pointing to flat buffer with different attributes, but I keep getting PrematureOutptrEnd error after triggering TASKS_START. Could you please provide a proper output job list structure for this peripheral?

Regards,

Michal

  • Hi Michal,

    Please refer to the following texts in the AAR documentation:

    AAR will stop when it has managed to resolve the maximum number allowed, specified in the MAXRESOLVED register. Each time AAR resolves an IRK, the index of the corresponding IRK is written to memory through the output job list in OUT.PTR. For each IRK found, OUT.AMOUNT is updated accordingly.

    ...

    OUT.AMOUNT: Number of bytes written to memory after triggering the START task.

    One IRK uses two bytes, so every two bytes means one resolved IRK index

    From that, we can see that the output is written in arrays of 16-bit indices.

    Hieu

  • The problem is that the structure/format of how the "output job list in OUT.PTR" should look like is not specified in the data sheet.

  • The data sheet indeed doesn't show how the structure of the job list should look like, but after a bit of trial and error after looking at how other peripherals' job lists look like, this structure seems to work:

    1. 32-bit pointer to a uint16_t array.

    2. 32-bit entry having the lower 24 bits set to the length of the array in bytes and the higher 8 bits set to 0x11.

    The OUT.PTR field should point to an array of these structures, ending with one item filled with zeros. Typically one struct item is sufficient, followed by the zeroed one.

    Both the array of structures as well as the 16-bit array must be placed in RAM.

  • My apology for misunderstanding and thank you for your help. I have made an internal request for documentation improvement.

Related