Home

ISSP Programming Errors

E-mail Print PDF
( 0 Votes )

Question: I get errors like "Can't acquire device", "Verify Failed", "Checksum Failed" etc when trying to program the PSoC.  What could be the problem?

Answer  Here are some possible situations that could create the above errors.


Scenario-1: 

The most commonly encountered problem in ISSP is when P1[0] and P1[1] are used for I2C.

In programming mode, both SCLK and SDATA pins of the PSoC are configured in Pull Down mode with an internal 5.6K pull down resistor.  There is no issue with the SCLK line as the programmer always drives the SCLK line.  But things are different with the SDATA line.  When the programmer is reading information from the PSoC (like device ID, verify, checksum etc), the PSoC has to drive the SDATA line.  The external I2C pull up resistor forms a potential divider with the internal pull down resistor and does not allow the PSoC to drive LOW on the SDATA line.  This could produce all the above said errors.

There are various approaches to solve this problem.

 

  • The first and the best “DO NOT USE THE ISSP PINS AS I2C”.  Use P1[5] and P1[7] instead.
  • If you are compelled to use the ISSP lines for I2C as well, try isolating the I2C pull up resistors from the SDATA line using a jumper when programming.
  • If you cannot implement the above because of board space problem, add an external load resistor on SDATA line to GND on the ISSP Programmer.  This resistor will apply in parallel with the internal pull down resistor of the PSoC and will reduce the effective resistance and reduce the potential divider effect.  The value of this external resistor will depend on the value of the I2C pull up resistors.  The criteria is that when PSoC drives a LOW on the pin, the potential divider should drive a voltage less than VIL level of the programmer (less than 0.6V should be fine).  Usually a value of 500 ohms to 1K should solve the problem. 
The same will also apply when the SDATA pin is being used to drive any other load on the VCC side, like driving the cathode side of an LED connected from VCC.
 

Scenario - 2:
When the ISSP pins are used as input pins and a low impedance source is driving the pin, the low impedance source will load the programmer causing programming errors.  If the ISSP pins have to be used for other purposes, use them as output pins driving high impedance loads.  The resistive load on the ISSP pins under this circumstance should not be less than 1K.
 

Scenario - 3
When the ISSP pins are used to drive a capacitive load.  The capacitive load on the ISSP pins should not exceed 330pF.  Higher capacitive loads on the ISSP pins will affect the rise and fall times of the ISSP signals resulting in programming errors.  
 
Check out Application note AN2014 - Design for ISSP from Cypress Semiconductors for more details on ISSP.

 

Comments (0)
Only registered users can write comments!