SWD AHB-AP access gives ACK_FAULT
The issue I found out was when I wrote to the CSW register to configure the access field-size in AHB-AP, I inadvertently cleared the MasterType[29], Hprot1[25], Res1[24] and DbgStatus[6]
bits documented in the Cortex-M series cores.

My mistake was using only the ARM Debug Interface Specification as reference for the CSW register, which does not contain documentation on these AHB-AP implementation-specific bits for the Cortex-M series cores.

In the ARM Debug Interface Specification, it documents the DeviceEn[6] bit as read-only rather than implementation-specific read/write access, and does not elaborate on the implementation-specific bits reserved in [30:24].

I confirmed that this was the problem when I used an oscilloscope to inspect the data phase of the first CSW write request from a SEGGER programmer connected to the same board and found that it wrote 0x23000052, which is

MasterType[29] = 0b1
Hprot1[25]     = 0b1
Reserved[24]   = 0b1
DbgStatus[6]   = 0b1
AddrInc[5:4]   = 0b01
Size[2:0]      = 0b010