Аппаратный сброс

Когда линия RST правильно настроена, сбросить GA1000 или WA2000 можно в любой момент простым кодом, приведённым ниже. Обратите внимание: модуль Wi-Fi обязательно нужно сбросить в самом начале. Правильный аппаратный сброс не является необязательным!

Совет

При использовании WM2000 или WS1102 аппаратный сброс для правильной работы после завершения настройки не требуется. Это изначально беспроводные устройства, и аппаратный сброс означал бы перезагрузку всего устройства.

Если в вашей конструкции нет свободной линии ввода-вывода общего назначения (GPIO), сигнал сброса можно получить из комбинации сигналов линий CS и CLK (см. Подключение GA1000 и WA2000, схема B). Если есть выделенная линия RST, ею управляют напрямую.

Линия RST активна при низком уровне (LOW). WA2000 требует импульс сброса длительностью не менее 1 мс. GA1000 длительность импульса не важна (в пределах того, что достижимо на устройствах Tibbo). Приведённый ниже код выполняет сброс обоих модулей Wi-Fi на всех платформах.

Обратите внимание и на цикл while...wend. Он нужен для правильного сброса модуля, который уже был запущен и работал. При аппаратном сбросе GA1000 или WA2000 уходит из сети, и объект wln. замечает это за несколько миллисекунд. Ваша программа не должна снова обращаться к объекту wln., пока свойство wln.enabled не примет значение 0 - NO в ответ на аппаратный сброс. Код может дожидаться этого (как показано ниже) или полагаться на обработчик события on_wln_event(PL_WLN_EVENT_DISABLED). После срабатывания события можно заново пройти весь процесс запуска интерфейса Wi-Fi.

	'----- reset Wi-Fi module -----
	#If WLN_RESET_MODE
		'reset is controlled by the combination of CS and CLK
		io.lineset(wln.csmap,HIGH)
		io.lineset(wln.clkmap,LOW)
		io.lineset(wln.clkmap,HIGH)
	#Else
		'there is a dedicated reset line
		io.num=WLN_RST
		io.state=LOW
		'The WA2000 requires a longer reset pulse (1ms), and the GA1000 will not mind it
		'32-bit platforms offers a convenient sys.timercountms method
		'Since the WA2000 only works on 32-bit platforms, let's write the code like this:
		#if PLATFORM_TYPE_32
			sys.timercountms=0
			while sys.timercountms<1
			wend
		#endif
		io.state=HIGH
	#endif
	'in case we called wln_init() after it has already been up and running
	While wln.enabled=YES
	Wend
Исходный материал Tibbo обновлён 16 августа 2022Оригинал на docs.tibbo.com · Сообщить об ошибке