setSn_TX_WR doesn’t work


For example, I write a 0x0001 to the Sn_TX_WR:

00 24 0C 00

00 25 0c 01

and read back a 0x0000 from the Sn_TX_WR back:

00 24 08 00

00 25 08 00

The transactions are verified on a Total Phase Beagle SPI analyzer.

What am I missing?


Manual says:

  1. Read the starting address for saving the transmitting data.
  2. Save the transmitting data from the starting address of Socket n TX buffer.
  3. After saving the transmitting data, update Sn_TX_WR to the increased value as many as transmitting data size. If the increment value exceeds the maximum value 0xFFFF(greater than 0x10000 and the carry bit occurs), then the carry bit is ignored and will automatically update with the lower 16bits value.
    4. Transmit the saved data in Socket n TX Buffer by using SEND/SEND command

The value of TX_WR for reading will be updated after you perform SEND command. Before you perform SEND command, you read old value back. This causes inability to use this register for storage of “intermediate” value of the TX_WR. If you perform TX buffer replenishment in several steps before performing SEND, you will have to store intermediate value of TX_WR somewhere else than TX_WR register.