I have a custom circuit board using the DA14580-01 and an external I2C EEPROM that I want to boot from connected to pins 0_0 and 0_1 (SCL, SDA, respectively). I have gone through AN-B-023 and customized the jtag_programmer.hex and created a new .bin file as explained in the document. In SmartSnippets, I connect my board to the Basic Dev Kit in JTAG mode as a DA14580-01 device, and then try to load my .hex file from a modified version of the reporter_fh example code in the SPI Flash Programmer section of SmartSnippets, and it burns succesfully.
However, if I reconnect the JTAG device (without power off) in SmartSnippets, and then try to read the data, it is empty. If I reset or power cycle the board, it appears to go into an infinite loop and never boots. The code works, so I think there must be something wrong. Here are my connections:
BASIC DEV
J4 Header pin | Custom Board (DA14580-01 pin)
P1 | VPP
P2 | GND
P3 | RST
P12 | P0_4
P14 | P0_5
P25 | SWDIO
P27 | SWCLK
I have tried EEPROM Programmer in SmartSnippets, but it says "Memory burning failed". I have also tried swapping the TX/RX pins. What am I doing wrong? Sorry I wish I could post pictures to make it easier! Thanks!
Dear JBaczuk,
If you want to burn your image into external I2C memory, you must use the I2C tab in SmartSnippets (and not the SPI section as you mentioned).
Then you must be sure that:
- one of the op codes shown in flash_programmer project match your memory op code.
- You have 2 10k pull up resistors on the line SDA and SCL.
regards,
DIALOG TEAM.
Note: I am using the suggested M24M01 EEPROM.
I see no I2C tab in Smart Snippets, all I see are:
● OTP Programmer
● EEPROM programmer
● SPI Flash
I've got 4.3k pull up resistors on SDA and SCL as per AN-B-023 document.
And when you mean memory OP CODE, are you talking about these lines in periph_setup.h of programmer_jtag.uvproj?
// Select EEPROM characteristics
#define I2C_EEPROM_SIZE 0x20000 // EEPROM size in bytes
#define I2C_EEPROM_PAGE 256 // EEPROM's page size in bytes
#define I2C_SLAVE_ADDRESS 0x50 // Set slave device address
#define I2C_SPEED_MODE I2C_FAST // 1: standard mode (100 kbits/s), 2: fast mode (400 kbits/s)
#define I2C_ADDRESS_MODE I2C_7BIT_ADDR // 0: 7-bit addressing, 1: 10-bit addressing
#define I2C_ADDRESS_SIZE I2C_2BYTES_ADDR // 0: 8-bit memory address, 1: 16-bit memory address, 3: 24-bit memory address
Hello JBaczuk,
which version of Smart Snippets are you using ? on 3.7 (latest version download from web site), FLASH tab is located on the left hand side , mid way down, as shown below in the picture.
BR JE_Dialog
That must be it, what website? The software tab on this website has 3.6. And I have the Flash tab on 3.6, but when you select it, it says SPI Flash. I've also tried the EEPROM and it said "Memory Burning Failed'
Hi, I got myself confused : sorry, FLASH programming is SPI only and version 3.6 is the latest. I was confusing with something different. I will ask the team to look into it for you . BR JE_DIalog
Hi JBaczuk,
You can download the latest SmartSnippets version from:
If you have a 64-bits windows machine:
http://support.dialog-semiconductor.com/smart-snippets-36-win64-installer
If you have a 32-bits windows machine:
http://support.dialog-semiconductor.com/smart-snippets-36-win32-installer
regards,
DIALOG TEAM.
Hi JBaczuk,
i understand the local team are on the case and supporting you , so i will close the ticket out on here as i'm confident the local FAE/sales will solve the issue. BR JE_Dialog
This turned out to be a hardware assembly issue using a CSP package that was not assembled properly. Other assemblers have done it correctly and now the EEPROM features work.