Hi,
Please be informed about a bug that exists OS 6.61 (Open AT v04.10).
In the ADL User Guide included in this version is the Range of the AddressLength indicated with 0-32 bit.
When I used 8, 9, or 16 bit the clock signal messured with a memory oscilloscope was generated correctly.
For the values 17, 24, or 32 bits the number of clock pulses was incorrect. It seems that 16 pulses is the maximum and values above 16 generate (16 - the value) pulses: I saw one pulse for AddressLength=17, 8 for AddressLength=24, and 16 for AddressLength=32.
This does not conform to the document, so either the document or the core firmware does have an error…
static s32 BusHandle = 0xFFFFFFFF;
static adl_busSPISettings_t BusConfig = {
15,
ADL_BUS_SPI_CLK_MODE_3,
ADL_BUS_SPI_ADDR_CS_GPIO,
ADL_BUS_SPI_CS_POL_LOW,
ADL_BUS_SPI_MSB_FIRST,
ADL_IO_Q2686_GPIO_35,
ADL_BUS_SPI_FRAME_HANDLING,
ADL_BUS_SPI_DATA_BIDIR
};
static adl_busAccess_t BusAccess = { 0, 0, 0, 0, ADL_BUS_SIZE_BYTE };
...
BusHandle = adl_busSubscribe( ADL_BUS_SPI2, (adl_busSPISettings_t *)&BusConfig );
...
BusAccess.Address = 0x88000000;
BusAccess.AddressLength = 32;
err = adl_busWrite( BusHandle, &BusAccess, 0, puData );
...
Please note, that in this code nothing except the Address is sent over the bus… I doubt, that it will work better if actually data is sent after the address (I haven’t tested it, though…)
Also, I’d like to remind you of the “SPI bus signals - Problems during read”-Bug (http://www.wavecom.com/modules/movie/scenes/forums/viewtopic.php?t=874). Which I think still is not fixed yet.
Best Regards,
Jan
