Strange PPI settings when migrating from NCS 2.5.0 to 2.7.0

When migrating form NCS 2.5.0 to 2.7.0, some of my PPI + GPIOTE code just stopped working. To debug this issue, I have added print statements after the PPI alloc function as shown below.

    nrfx_err_t err = nrfx_ppi_channel_alloc(channel);
    if (err != NRFX_SUCCESS) {
        return false;
    }

    err = nrfx_ppi_channel_assign(*channel, event, task);
    if (err != NRFX_SUCCESS) {
        return false;
    }

    if (use_fork) {
        err = nrfx_ppi_channel_fork_assign(*channel, task2);
        if (err != NRFX_SUCCESS) {
            return false;
        }
    }

    err = nrfx_ppi_channel_enable(*channel);
    if (err != NRFX_SUCCESS) {
        return false;
    }

    NRF_PPI_Type* ppi_reg = (NRF_PPI_Type*)NRF_PPI_BASE;
    LOG_INFO("");
    LOG_INFO("Channel num is %x", *channel);
    LOG_INFO("Channel EEP reg is %x", ppi_reg->CH[*channel].EEP);
    LOG_INFO("Channel TEP reg is %x", ppi_reg->CH[*channel].TEP);
    LOG_INFO("Channel enable reg is %x", ppi_reg->CHEN);
 

/////////////////// 2.7.0 ///////////////////
<INF> 
<INF> Channel num is 12
<INF> Channel EEP reg is 4001b140
<INF> Channel TEP reg is 4001a004
<INF> Channel enable reg is c0000
<INF> 
<INF> 
<INF> Channel num is 11
<INF> Channel EEP reg is 4001a140
<INF> Channel TEP reg is 40004010
<INF> Channel enable reg is e0000
<INF> 
<INF> 
<INF> Channel num is 10
<INF> Channel EEP reg is 40004118
<INF> Channel TEP reg is 4001b008
<INF> Channel enable reg is f0000
<INF> 
<INF> 
<INF> Channel num is f
<INF> Channel EEP reg is 40006108
<INF> Channel TEP reg is 40023010
<INF> Channel enable reg is f8000
<INF> 
<INF> 
<INF> Channel num is e
<INF> Channel EEP reg is 40023118
<INF> Channel TEP reg is 4000600c
<INF> Channel enable reg is fc000

/////////////////// 2.5.0 ///////////////////
<INF> Channel num is 5
<INF> Channel EEP reg is 4001b140
<INF> Channel TEP reg is 4001a004
<INF> Channel enable reg is 4020
<INF> 
<INF> 
<INF> Channel num is 4
<INF> Channel EEP reg is 4001a140
<INF> Channel TEP reg is 40004010
<INF> Channel enable reg is 4030
<INF> 
<INF> 
<INF> Channel num is 3
<INF> Channel EEP reg is 40004118
<INF> Channel TEP reg is 4001b008
<INF> Channel enable reg is 4038
<INF> 
<INF> 
<INF> Channel num is 2
<INF> Channel EEP reg is 40006108
<INF> Channel TEP reg is 40023010
<INF> Channel enable reg is 403c
<INF> 
<INF> 
<INF> Channel num is 1
<INF> Channel EEP reg is 40023118
<INF> Channel TEP reg is 4000600c
<INF> Channel enable reg is 403e
<INF> 

I am really confused to why the channel allocation number is now different when migrating to 2.7.0. I haven't really add anything new in my prj.conf file during the migration. Any help or suggestion would be greatly appreciated. Thanks!

Related