This module tests the PPCA IPC block on PSOC Control C3 M8 in loopback mode from the Main CM33.
No PPCA CPU firmware is required.
Procedure: <br> 1) Acquire the PPCA IPC channel. <br> 2) Write a 64-bit message. <br> 3) Send an acquire-notify event to a specified PPCA IPC interrupt line. <br> 4) Read the written data back in the ISR. <br> 5) Release the PPCA IPC channel.
For PSOC Control C3 M8, the PPCA IPC block exposes: Channels : 0 - 3 (CY_PPCA_IPC_CHANNELS = 4) Interrupts : 0 - 3 (ppca_ipc_0_IRQn ... ppca_ipc_3_IRQn) The test exercises all 16 (channel * interrupt-structure) pairs. On failure, use \ref SelfTest_IPC_PPCA_GetFailChannel(), \ref SelfTest_IPC_PPCA_GetFailIntr(), and \ref SelfTest_IPC_PPCA_GetFailSubtest() to identify the failing pair and sub-test.
| Sub-test | Feature tested | Failure condition |
|---|---|---|
| 1 | Acquire on free channel | LockAcquire() did not return CY_IPC_DRV_SUCCESS |
| 2 | Release - ACQUIRED bit clears | LockRelease() failed or ACQUIRED bit remained set |
| 3 | Lock-status ACQUIRED attribute | IsLockAcquired() returned false immediately after acquire |
| 4 | DATA0/DATA1 write/read integrity | Read-back of 0xDEADBEEF/0xCAFEBABE did not match write |
| 5 | DATA0/DATA1 independence | 0x55555555/0xAAAAAAAA pattern shows cross-register leak |
| 6 | Notify-to-self loopback | ISR timed out or did not observe the correct channel bit |
| 7 | INTR clear-on-write-1 | Notify bit still set in INTR after ClearInterrupt() in ISR |
| 8 | Interrupt masking | Raw INTR wrong, INTR_MASKED != 0 at mask=0, ISR fired masked |
| 9 | INTR_MASKED algebraic consistency | INTR_MASKED != INTR & INTR_MASK (two mask states checked) |
| 10 | INTR_SET software-forced interrupt | ISR did not fire after SetInterrupt() + unmask |
| 11 | Release-event self-loopback | ISR timed out or did not observe the release bit |
| 12 | Silent release - no interrupt | ISR fired on zero-mask release, or ACQUIRED did not clear |
| 13 | DATA group: lock release | LockRelease() returned error after DATA sub-tests 4-5 |
| 14 | NOTIFY group: lock release | LockRelease() returned error after NOTIFY sub-tests 6-7 |
API Reference | |
| Functions | |