Прошивка через Arduino
Прошивка через Arduino (или ESP826) выполняется с использованием проекта https://github.com/wavesoft/CCLib
Но с небольшими доработками!!!
Один из пользователей описал, что смог прошить CC2531 используя CCLib и описал свои замечания.
Согласно описанию сделал клон библиотеки CCLib с небольшими изменениями для прошивки через Arduino:
- Выставлены таймауты операций, чтобы не “зависало” при блокировке порта
- После открытия порта (почему-то у меня в Windows 7) Arduino перезагружается и соответственно не отвечает на запросы - сделана пауза в 3 секунды (где-то вычитал в интернете такой прием).
- Понижена скорость порта до 9600, т.к. на другой скорости выходя ошибки коммуникации:
ERROR: Could not read from the serial port!
-
Скачиваем и распаковываем архив с библиотекой https://github.com/kirovilya/CCLib.
-
Прошиваем в Arduino скетч CCLib\Arduino\CCLib\Examples\CCLib_proxy\CCLib_proxy.ino
При прошивке через ESP8266, необходимо изменить подключение (п.5) и соответственно номера пинов в файле Arduino/CCLib/Examples/CCLib_proxy/CCLib_proxy.ino
-
Если не установлен, то установить Python 2.7 или старше (проверял на python 2.7.13)
-
Если не установлен pyserial, то выполнить
pip install -r requirements.txt
илиpip install pyserial==3.0.1
-
Соединить контакты согласно описанию https://github.com/kirovilya/CCLib#1-prepare-your-arduino-board НО в моем случае я подключал совсем без резисторов и объединил контакты CC_DD_I и CC_DD_O вместе и подключил к DD контакту DEBUG-разъема!
Соединял только 3 указанные контакта и GND. Во время прошивки стик должен быть подключен к USB.
- После этого попытаться получить информацию о чипе - если это получится, значит подключение выполнено верно (пример для порта COM9):
C:\Projects\CCLib\Python>python cc_info.py -p COM9
INFO: Found a CC2531 chip on COM9
Chip information:
Chip ID : 0xb524
Flash size : 256 Kb
Page size : 2 Kb
SRAM size : 8 Kb
USB : Yes
Device information:
IEEE Address : 00124b0014aa
PC : 0000
Debug status:
[ ] CHIP_ERASE_BUSY
[ ] PCON_IDLE
[X] CPU_HALTED
[ ] PM_ACTIVE
[ ] HALT_STATUS
[ ] DEBUG_LOCKED
[X] OSCILLATOR_STABLE
[ ] STACK_OVERFLOW
Debug config:
[ ] SOFT_POWER_MODE
[ ] TIMERS_OFF
[X] DMA_PAUSE
[X] TIMER_SUSPEND
Или вот еще один пример успешного подключения на Mac
-
Если всё успешно, то скачиваем модифицированную для прошивки через Arduino прошивку
-
Запускаем прошивку (выполняется долго, порядка 2-3 часа):
C:\Projects\ZigBee>python cc_write_flash.py -e -p COM9 --in=CC2531ZNP-Pro-Secure_LinkKeyJoin_mod.hex
INFO: Found a CC2531 chip on COM9
Chip information:
Chip ID : 0xb524
Flash size : 256 Kb
Page size : 2 Kb
SRAM size : 8 Kb
USB : Yes
Sections in CC2531ZNP-Pro-Secure_LinkKeyJoin_mod.hex:
Addr. Size
-------- -------------
0x0000 8176 B
0x1ff6 10 B
0x3fff0 1 B
0x2000 239616 B
This is going to ERASE and REPROGRAM the chip. Are you sure? <y/N>: y
Flashing:
- Chip erase...
- Flashing 4 memory blocks...
-> 0x0000 : 8176 bytes
Progress 100%... OK
-> 0x1ff6 : 10 bytes
Progress 100%... OK
-> 0x3fff0 : 1 bytes
Progress 100%... OK
-> 0x2000 : 239616 bytes
Progress 100%... OK
Completed