Hi!
When I migrate my application from 3.01 (OS 6.50) to 3.10 (OS 6.55) on
my Q2501, I find out that new version do not support 2 SPI at the same time.
Follow code demonstrate this:
u32 wm_apmCustomStack [ 1024 ];
const u16 wm_apmCustomStackSize = sizeof ( wm_apmCustomStack );
s8 HANDLE_1 = ERROR;
s8 HANDLE_2 = ERROR;
void TEST_CmdHandler ( adl_atCmdPreParser_t *paras )
{
ascii str[100];
s8 ret;
u8 Value;
adl_busAccess_t SpiBus_Access = {0,0,0,0};
switch(atoi(ADL_GET_PARAM ( paras, 0 )))
{
case 10: // Subscribe to SPI 1
HANDLE_1 = adl_busSubscribe(ADL_BUS_TYPE_SPI | ADL_BUS_SPI_ADDR_CS_SPI_EN,
ADL_BUS_SPI_SCL_SPEED_1Mhz | ADL_BUS_SPI_CLK_MODE_0 |
ADL_BUS_SPI_CS_POL_LOW | ADL_BUS_SPI_MSB_FIRST | ADL_BUS_SPI_BYTE_HANDLING);
wm_sprintf(str, "\r\nHANDLE_1: %d\r\n", HANDLE_1);
adl_atSendResponse ( ADL_AT_RSP, str);
break;
case 11: // Read from SPI 1
ret = adl_busRead(HANDLE_1, &SpiBus_Access, 1, &Value);
wm_sprintf(str, "\r\nSPI 1 read (%d): 0x%X\r\n", ret, Value);
adl_atSendResponse ( ADL_AT_RSP, str);
break;
case 12: // Unsubscribe from SPI 1
ret = adl_busUnsubscribe( HANDLE_1 );
HANDLE_1 = ERROR;
wm_sprintf(str, "\r\nSPI 1 unsubscribe: %d\r\n", ret);
adl_atSendResponse ( ADL_AT_RSP, str);
break;
case 20: // Subscribe to SPI 2
HANDLE_2 = adl_busSubscribe(ADL_BUS_TYPE_SPI | ADL_BUS_SPI_ADDR_CS_SPI_AUX,
ADL_BUS_SPI_SCL_SPEED_1Mhz | ADL_BUS_SPI_CLK_MODE_0 |
ADL_BUS_SPI_CS_POL_LOW | ADL_BUS_SPI_MSB_FIRST);
wm_sprintf(str, "\r\nHANDLE_2: %d\r\n", HANDLE_2);
adl_atSendResponse ( ADL_AT_RSP, str);
break;
case 21: // Read from SPI 2
ret = adl_busRead(HANDLE_2, &SpiBus_Access, 1, &Value);
wm_sprintf(str, "\r\nSPI 2 read (%d): 0x%X\r\n", ret, Value);
adl_atSendResponse ( ADL_AT_RSP, str);
break;
case 22: // Unsubscribe from SPI 2
ret = adl_busUnsubscribe( HANDLE_2 );
HANDLE_2 = ERROR;
wm_sprintf(str, "\r\nSPI 2 unsubscribe: %d\r\n", ret);
adl_atSendResponse ( ADL_AT_RSP, str);
break;
}
adl_atSendResponse ( ADL_AT_RSP, "\r\nOK\r\n");
}
void adl_main ( adl_InitType_e InitType )
{
adl_atCmdSubscribe ( "at+test", TEST_CmdHandler, ADL_CMD_TYPE_PARA | 0x0011);
}
For 650a09gg.Q2501B 1949844 122204 14:53 steps:
- Subscribe to SPI 1 - OK (at+test=10)
- Subscribe to SPI 2 - OK (at+test=20)
- Read from SPI 1 - OK (at+test=11)
- Read from SPI 2 - OK (at+test=21)
- Unsubscribe from SPI 1 - OK (at+test=12)
- Unsubscribe from SPI 2 - OK (at+test=22)
For 655_09gg.Q2501B 2015268 111705 17:01 steps:
- Subscribe to SPI 1 - OK (at+test=10)
- Subscribe to SPI 2 - OK (at+test=20)
- Read from SPI 1 - OK (at+test=11)
- Read from SPI 2 - ERROR (-61) (at+test=21)
- Unsubscribe from SPI 1 - OK (at+test=12)
- Unsubscribe from SPI 2 - ERROR (-22) (at+test=22)
Only work if:
- Subscribe to SPI 1 - OK (at+test=10)
- Read from SPI 1 - OK (at+test=11)
- Unsubscribe from SPI 1 - OK (at+test=12)
- Subscribe to SPI 2 - OK (at+test=20)
- Read from SPI 2 - OK (at+test=21)
- Unsubscribe from SPI 2 - OK (at+test=22)
What happened?
Probably I do something incorrectly?
What is error -61?
Thanks!