Jump to: navigation, search

LimeMicro:LMS7002M MCU Production Test

The MCU in LMS7002Mr3 contains 16kB program code. It is connected to EEPROM 24FC128 (dedicated to program code), which has A0, A1 and A2 input pins (I2C address), tied to‘0’.

Test procedure

The procedure for production test for MCU (including the steps for programming both 16kB on- chip SRAM and external 24FC128 EEPROM) is as follows:

  1. Hardware reset (active low pulse at RST_N pin)
  2. 0x0006=0x0001 (MCU gets SPI interface to IP blocks)
  3. 0x0002=0x0080 (MCU reset)
  4. 0x0002=0x0081 (EEPROM and SRAM programming mode)
  5. Execute "ptest" pattern and check for PASS. This sends the 16kB program code consisting of 256 packets of 64 bytes. This is main difference. After each 64-byte packet is sent, wait for 11 ms, this delay is calculated for MCU Fclk=40MHz and SPI_clk=8MHz.
  6. Wait 1 ms 
  7. 0x0002=0x0085
  8. Wait 1 ms 
  9. 0x0002=0x0081
  10. Wait 230 ms to run the test
  11. Read 0x0001 and check the result
  12. 0x0006=0x0000 (Baseband processor gets the SPI  interface to IP blocks)


The results are obtained by reading the register 0x0001, which contains the port P1. The port P1 has value 0x00 at the beginning of test procedure. During the test P1 value is incremented as sub-tests are being executed. Test is in progress when the P1 value is in range from 0x00 to 0x0F. At the end, the P1 has value 0x10, meaning that test is finished without errors. Therefore, if the tester reads the 0x10, it means that the MCU is OK.

If some error occurs, four MSB bits of P1 are set to “0011”, indicating error. The failed test is specified by four LSB bits of P1 (in range from “0001” to “1111”).