[SL8082T] UART Interface / WAKE_N, FW R7.50

Hi all,

i am evaluating the SL8082T as a replacement for our old GSM module. Since our design is quite old, i have to connect the module via the UART interface to the host.

Now i have trouble getting this setup to work. According to the document “4111992 Product Technical Specification & Customer Design Guidelines for AirPrime SL808x” it should be possible to switch the UART with the command AT+WHCNF to an 8-Wire Serial Interface which uses the WAKE_N pin as hardware RING signal. But with AT+WHCNF i can only set FIFO buffer sizes… it seems to me the meaning of this command has completely changed. When i measure the state of the WAKE_N pin it always sticks to 0V (GND, active, with pull up to 1V8).

Is there anything i can do to get the WAKE_N pin to work as RING signal with the SL8082T?

Thanks,
Stephan

Hi Stephan,

For now, the SL8082T is only available with a 4-wire uart (but maybe available on a SL8082).

On this product, Be careful to use the OpenAT documentation (the last one looks to be “AT commands Interace Guide for firmware 7.52”), and not the documentation for SL808x (both module doesn’t use the same AT commands).

Thanks.

Thank you for your info. The datasheet for the SL Series is somehow confusing, since it does not make a difference between the original and the T variant.

Guess i have to create an Open AT application to simulate the hardware RING signal over a GPIO pin.

Stephan

Hi all,

i spent my day looking for a workaround for my problem with the hardware RING problem.

Now i can proudly presend my Solution:

static adl_ioDefs_t GpioConfig = ADL_IO_GPIO | 1 | ADL_IO_LEV_HIGH | ADL_IO_DIR_OUT;
static s32 GpioHandle;

void Timerhdl(u8 ID, void *Context)
{
    TRACE (( 1, "Timer handler" ));

    adl_ioWriteSingle(GpioHandle, &GpioConfig, TRUE);
}

bool UnSohdl(adl_atUnsolicited_t *UnSo)
{
    TRACE (( 1, "RING handler" ));

    adl_tmrSubscribe(FALSE, 1, ADL_TMR_TYPE_100MS, Timerhdl);

    adl_ioWriteSingle(GpioHandle, &GpioConfig, FALSE);

	return TRUE;
}

void main_task ( void )
{
	ascii *UnSostr = adl_strGetResponse(ADL_STR_CRING);

	if (UnSostr != NULL) {
		GpioHandle = adl_ioSubscribe(1, &GpioConfig, ADL_TMR_TYPE_TICK, 0, 0);
		if (GpioHandle >= 0) {
			adl_ioWriteSingle(GpioHandle, &GpioConfig, TRUE);

			TRACE((1, "Registering Handler to URC +CRING"));
			adl_atUnSoSubscribe(UnSostr, UnSohdl);
		} else {
			TRACE((1, "Could not subscribe to GPIO1: %ld", GpioHandle));
			if (GpioHandle == ADL_RET_ERR_DONE) {
				TRACE((1, "Error: %ld", (GpioConfig & ADL_IO_ERR_MSK) >> ADL_IO_ERR_POS));
			}
		}

		adl_memRelease(UnSostr);
	} else {
		TRACE((1, "Could not get response ADL_STR_CRING"));
	}
}

The given code registers a callback handler for the unsolicited result code “+CRING”. In the callback the signal GPIO1 is set to 0 (active state) and a one-shot timer of about 100ms is started. In the timer handler the GPIO1 is finally set back to 1 (inactive state).

Stephan