Hi, the difference for S12X is that it always operates as a 16-bit data bus, thus:
The 16-bit data interface implements the byte-access/misaligned-word access by driving the word-aligned address (e.g. 0x401000) and using the LDS and UDS strobes to pick off either the upper- or lower-byte as required. In this way you can do byte reads and word reads starting at any address in memory (the byte at 0x401000 is read by asserting UDS and driving 0x401000 onto the bus). A misaligned word access (say to 0x401001) would use two consecutive reads at 0x401000 then 0x401002 and select the correct byte by asserting firstly LDS (for 0x401001) and then UDS (for 0x401002). So a 16-bit memory is completely supported for accessing any word or byte anywhere.
The limitation with 8-bit data busses is that S12X only delivers these word-aligned addresses to the peripheral (Notice in the above example that S12X never provides the address 0x401001). So accessing a byte is no problem but attempts to do 16-bit accesses will only work for the odd byte of the word access.
Hope that's clear - it's a bit complicated to explain in a text format, but Daniel covers the 8-bit options very well in AN2708 on page 9.
Cheers,
Steve
Message Edited by Steve on 04-06-200610:22 PM