Skip to content

upgrading firmware on BM62

Tomáš Kováčik edited this page Jul 22, 2020 · 5 revisions

P2_0 and P2_4 pulled to ground

EAN pulled high directly to VDD_IO (this is required even that datasheet stated there is pullup!)

22uF cap on VDD_IO (check erata)

5V connected to 5V

gnd to gnd

rx to B10 of stm32

tx to B11 of stm32

run isbtflash.exe

select com port, speed 115200:240 hit connect

browse-> select firmware files:

BT5506_SHS_FLASH.H00

BT5506_SHS_FLASH.H01

BT5506_SHS_FLASH.H02

BT5506_SHS_FLASH.H03

BT5506_SHS_FLASH.H04

BT5506_SHS_FLASH.H05

BT5506_SHS_FLASH.H06

BT5506_SHS_FLASH.H07

BT5506_SHS_FLASH.H08

BT5506_SHS_FLASH.H09

BT5506_SHS_FLASH.H10

BT5506_SHS_FLASH.H11

BT5506_SHS_FLASH.H12

BT5506_SHS_FLASH.H13

BT5506_SHS_FLASH.H14

BT5506_SHS_FLASH.H15

hit update button

after the restart of the module identify in EEPROM_tool as IS2064S_012_SPK02_V2.1_BETA

unfortunately, EEPROM_TOOL is not able to upload a new EEPROM patch created from

UITool_IS206x_012_DualModeSPK_v2.1.25_UI_Default_Table.txt or UITool_IS206x_012_DualModeSPK_v2.1.25_BM62_EVB_UartEnable.txt

and IS206X_012_DUALMODESPK2.1_E1.0.4.1_1214.bin

"Device's IC version doesn't match File's IC version: IS206X_012_DUALMODESPK2.1_E1.0"

reading the second post in this thread https://www.microchip.com/forums/m1046854.aspx I just remembered about stupid EAN PIN!

PULL P2_0 and ENA DOWN DIRECTLY TO GROUND! reset! -> IS206X_012_DUALMODESPK2.1_E1.0 !!! VOHO!!

write new eeprom, do not forget check "Load default in into IP" on third screen of MPET.exe

code for stm32:

#define BLUETOOTH_EEPROM_UPLOAD PA4 //goes to P2_0
#define BLUETOOTH_FLASH_UPLOAD PA5 //goes to P2_4
#define BLUETOOTH_EAN PA6 //goes to EAN
#define BLUETOOTH_RESET PB14

void setup() {
  Serial.begin(115200);
  Serial3.begin(115200); //Serial3 => TX = PB10, RX = PB11
//  pinMode(BLUETOOTH_EEPROM_UPLOAD, OUTPUT);
//  digitalWrite(BLUETOOTH_EEPROM_UPLOAD, LOW);
//  pinMode(BLUETOOTH_FLASH_UPLOAD, OUTPUT);
//  digitalWrite(BLUETOOTH_FLASH_UPLOAD, LOW);
//  pinMode(BLUETOOTH_RESET, OUTPUT);
//  digitalWrite(BLUETOOTH_RESET, LOW);
  delay(100);
  digitalWrite(BLUETOOTH_RESET, HIGH);
}

void loop() {
//  Serial.println("Start\nsending 0x0120fc00:");
//  delay(1000);
//  Serial3.write(0x01);
//  Serial3.write(0x20);
//  Serial3.write(0xFC);
//  Serial3.write(0x00);
//  Serial.println("responce:");
//  while (Serial3.available()) {    // If anything comes in Serial1 (pins 0 & 1)
//    Serial.write(Serial3.read());   // read it and send it out Serial (USB)
//  }
//  delay(1000);
  while (1) {
    if (Serial3.available()) {    // If anything comes in Serial1 (pins 0 & 1)
      Serial.write(Serial3.read());   // read it and send it out Serial (USB)
    }
    if  (Serial.available()) {     // If anything comes in Serial (USB),
      Serial3.write(Serial.read());   // read it and send it out Serial1 (pins 0 & 1)
    }
  }
  //delay(100);
}
Clone this wiki locally