Why should PSELx = 0 when the APB transaction is completed?

It would seem that if I let PSELx stay at its existing value at the end of a transaction, rather than unconditionally setting it to 0, it would reduce power consumption, since PSELx wouldn't have to change when the next transaction selects the same PSELx.
This is certainly an advantage.

Nevertheless, why does the APB spec. require PSELx to be set to 0 at the end of a transaction?

Parents
  • This would instead probably increase power consumption because PSELx high and PENABLE low tells the selected peripheral that this is the "setup" phase of a transfer and that it should sample the PADDR, PWRITE and other control signals so that it knows what data transfer to perform in the next cycle (when PENABLE should then be high).

    If there is no transfer required, PSELx must be driven low, and then the peripherals on the bus don't need to do anything (no registering of control inputs).

    You can keep PSELx high if you are performing back-to-back transfers on the bus, but otherwise the protocol uses PSELx low as indicating no activity.

Reply
  • This would instead probably increase power consumption because PSELx high and PENABLE low tells the selected peripheral that this is the "setup" phase of a transfer and that it should sample the PADDR, PWRITE and other control signals so that it knows what data transfer to perform in the next cycle (when PENABLE should then be high).

    If there is no transfer required, PSELx must be driven low, and then the peripherals on the bus don't need to do anything (no registering of control inputs).

    You can keep PSELx high if you are performing back-to-back transfers on the bus, but otherwise the protocol uses PSELx low as indicating no activity.

Children