Board type: 6-layer PCB Assembly
Thickness: 1.522 mm
CAD software: Altium Designer 21
LISSA P/N: UMS-0586 (EM)
Manufacturer: MicroArt
Date: July, 2022
Key Notes:
1. Fix printf in the code that prevent build
2. Add info on C/C++ application when setting up debug configurations on SoftConsole to Github instructions
3. Add info on getting Git Bash working with Github and how to get repository on local computer to Github
4. Over longer durations, the RTC gains a few seconds and may need to be resynced using GPS time. Need to use GPS to update time every few minutes
5. Fixes for FM:
a. Capacitors C2, C3, C4, C5, C14, and C15 on oscillators are not needed. Remove them.
b. Add pinout for second UART on pin 36 (TX) and pin 37 (RX) of SmartFusion2 microcontroller. This is needed for the RS-485 links
c. Add hardware needed for two RS-485 links (UART #1 to RS-485 #1 and UART #2 to RS-485 #2). One link for COMMS transceiver and one for star tracker.
d. Have some sort of method to allow us to either use RS-485 or UART to future proof the design and allow for adaptability/change
e. Change thermistor part to NTCG163JX103DTDS (LINK). Currently it is a resistor.
f. Change board thickness to 1.52 mm. Currently about 1.90 mm
g. Move components away from mounting holes to prevent interference with structure standoffs
h. Add four more chip select (CS) pins for reaction wheel SPI
i. Change harnessing connectors/add more connectors to accommodate the two new RS-485 lines, new RW CS lines, and GNSS CAN and PPS line.
j. Verify center hole mounting insulation clearance with the spacer diameter to make sure there are no conductive paths on the CDH board touching the spacers.
k. Add pin for GNSS receiver PPS link. A GPIO input with pull-up/pull-down on pin ##
l. Given (a), this change is NOT needed. IGNORE (l). Capacitor C2, C3, C4, C5, C14, C15 need to be 22pF. Current part is 2.2nF.
Start Date:
June 12, 2024
End Date:
November 04, 2024
Part Name:
UMS-0586
Application:
LiBus CDH
Quantity:
1
Item
T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
T12
T13
T14
T15
Test Item
Microcontroller/FPGA
Reset Button/Watchdog
CAN Tx
CAN Rx
SPI Tx
SPI Rx
1Gb Flash Read/Write
16Mb Flash Read/Write
4Mb MRAM Read/Write
16Mb SRAM Read/Write
ADC/Thermistor
RTC Time Keeping
UART Tx
UART Rx
Power In & Voltage Regulators
Test Result
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Successful
Details
Successful upload of MCU pin assignment and SoftConsole code
Successful reset when anomaly detected
Successful sending data over CAN
Successful receiving data over CAN
Successful sending data over SPI
Successful receiving data over SPI
Successful read/write/erase/Device ID
Successful read/write/erase/Device ID
Successful read/write/erase
Successful read/write/erase/Device ID
Successful temperature measurements
Successful time keeping
Successful sending data over UART
Successful receiving data over UART
Successful CDH operation between 6.0 V and 7.3 V input voltage
Item
P1
P2
P3
Property Item
Visual Inspection
Dimension Fit Check
Mass Inspection
Result
Successful
Partly Successful
Successful
Details
No physical damage, missing parts, or poor soldering
Measured dimensions within tolerance except board thickness
CDH mass less than mass budget
No.
1
S/N
UMS-0586
Pack Group
Engineering models
Item
T1
Test Item
Microsemi SmartFusion SoC
Test Specification
Verify that FPGA array and test software can be uploaded and run on the processor/FPGA unit. Also, read the MCU device ID
Judge Criteria
Successful upload of MCU/FPGA pin assignment and software code.
Check Libero and SoftConsole for successful upload message.
Correct MCU ID
Samples
1 CDH board
Test period: 12-Jul-2024 to 12-Jul-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2,
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-013 [4310], R-LIB-CDH-031 [4738], R-LIB-CDH-039 [5164]
Use Microsemi SmartDebug application to read the device ID and device status.
Open SmartDebug application which is automatically installed with Libero
Connect the programmer to the computer and to the CDH board
Create a new project and give any Name and Location
Select the programmer - if programmer is connected you will see a number but if not connected you will only see Simulation
Select Construct Automatically and create project
Once created, click View Device Status
This will contain the programmer and MCU/FPGA data
Connect the CDH board to the computer using the FlashPro6 JTAG debugger. Run Libero software and upload pin assignments and debug software (see GitHub repository for details on how to build and upload pinout and code to MCU/FPGA).
SmartDebug output showing the programmer and MicroSemi SmartFusion2 SoC device data verifies that the CDH MCU/FGPA are functional. Image below shows the MCU information and programmer information:
Device Family: SmartFusion2
Device Die: M2S010
Successfully uploaded the Libero project containing MCU/FPGA pin assignments from the master branch of Github
Item
T2
Test Item
Reset Button/Watchdog
Test Specification
Verify that the reset button (S1) performs a system reset when pressed and system turn on normally after reset
Judge Criteria
CDH board disconnects from SoftConsole when reset button is pressed
CDH board reboots and runs previously uploaded software after reset. Check output on SoftConsole to verify reboot. This could involve reading/printing the RTC time in the command window
Samples
1 CDH board
Test period: 12-Aug-2024 to 12-Aug-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, and SoftConsole V6.5
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-039 [5164], R-LIB-CDH-044 [5155]
Run a simple software version that displays the RTC time on the command window. Then, press the physical reset push button (S1, RESET) to trigger a reset. Verify that the print stops momentarily and returns when reset button is released
In the main() function, uncomment xTaskCreate(vTestWD,"Test WD",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the WATCHDOG using the init_WD() function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
Use the test code and toggle watchdog at 500ms for three cycles (3 times high, 3 times low). Then, put a delay of 2000ms, which longer than the watchdog reset time as indicated on the schematic (in this case WDI should toggle faster than 1650ms).
Jump the JP1 solder bridge and probe the RESET signal on JP1 using a logic analyzer
Also probe the WDI signal using a logic analyzer to see the 500ms cycles and a longer 2000ms delay
After three cycles of WDI at 500ms, you will see RESET is pulled to GND
Logic analyzer shows that WDI is toggled at 500ms for three cycles, then the watchdog resets the microcontroller during the longer 2000ms delay (since 2000ms is a greater delay than 1650ms, which is the maximum delay the watchdog is set to except)
Item
T3
Test Item
CAN Transceiver
Test Specification
Verify that CDH can send messages over CAN Bus.
Judge Criteria
Ensure that you receive the exact message sent by the CDH over CAN on the receiver end CAN device (could be another CDH or Arduino)
Samples
1 CDH board
Test period: 26-Jul-2024 to 26-Jul-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5, and Secondary CAN device
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-005 [5904], R-LIB-CDH-007 [4072], R-LIB-CDH-008 [4075], R-LIB-CDH-009 [4079], R-LIB-CDH-011 [4095], R-LIB-CDH-015 [4116], R-LIB-CDH-039 [5164]
Use a secondary device with a CAN transceiver and connect it to CDH CAN H and CAN L lines on connector J2.
In the main() function, uncomment xTaskCreate(vTestCANTx,"Test CAN Tx",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the CAN using the init_CAN(CAN_BAUD_RATE_250K,NULL) function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
Use the test code and send sample data via CAN. Read the data on the secondary CAN device (logic analyzer or other subsystem board with CAN read capabilities) and ensure the data received by the secondary CAN device matches the data sent by the CDH CAN transceiver.
Connect the CAN H and CAN L outputs from the CDH (located on connecter J2 or through harnessing connectors) to a logic analyzer
The code first initializes the CAN at a rate of 250000
Then, it sends a CAN message with the following parameters:
ID: 321 (hex)
Data length: 8
Data: 1, 2, 3, 4, 5, 6, 7, 8 (hex)
On the logic analyzer, collect data and run the CAN decode option to decode the received CAN message
The data received and decoded on the logic analyzer matches the data sent by the CDH
Item
T4
Test Item
CAN Transceiver
Test Specification
Verify that CDH can receive messages over CAN Bus.
Judge Criteria
Ensure that you receive the exact message sent by a CAN transmitter (could be another CDH or Arduino) over CAN on the CDH as the receiver end
Samples
1 CDH board
Test period: 02-Oct-2024 to 02-Oct-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5, and Secondary CAN device
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-005 [5904], R-LIB-CDH-007 [4072], R-LIB-CDH-008 [4075], R-LIB-CDH-009 [4079], R-LIB-CDH-011 [4095], R-LIB-CDH-015 [4116], R-LIB-CDH-039 [5164]
Use a secondary device with a CAN transceiver and connect it to CDH CAN H and CAN L lines on connector J2
In the main() function, uncomment xTaskCreate(vTestCANTx,"Test CAN Rx",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the CAN using the init_CAN(CAN_BAUD_RATE_250K,NULL) function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
In the vTestCANRx() function, place a breakpoint on the if (xQueueReceive….) line to allow you to read the rx_msg
Find the can.c file and in CAN_IRQHandler(void), put a breakpoint on xQueueSendToBackFromISR(can_rx_queue,...);
Use the test code and receive sample data via CAN. Read the data sent by the secondary CAN device (other subsystem board with CAN send capabilities) and ensure the data received by the CDH CAN device matches the data sent by the secondary CAN transceiver.
For this test, I used a second CDH EM (UMS-0586) board as the secondary CAN device and set up the second CDH board to send dummy data to CDH via CAN.
Connect the CDH CAN H and CAN L outputs from the CDH (located on connecter J2 or through harnessing connectors) to second CDH EM board's CAN H and CAN L pins.
The code first initializes the CAN with a rate of 250000
Then, it waits to receive a message from the secondary CAN device. In this test, the secondary CDH CAN was setup to send:
Data length: 8
Data: brendan! (in ASCII)
On the CDH, read the DATA in the rx_buf
Compare the read the data in the telemetry packet to the data sent by the secondary CDH over CAN
Data received by the CDH over CAN matched the data sent by the secondary CDH over CAN:
Data sent secondary CDH: brendan!
Item
T5
Test Item
SPI Tx
Test Specification
Verify that CDH can send sample data over the SPI lines
Judge Criteria
Ensure that you receive the exact message sent by the CDH over SPI on the receiver end SPI device (could be another CDH or logic analyzer)
Samples
1 CDH board
Test period: 12-Aug-2024 to 12-Aug-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5, and Secondary SPI device
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-008 [4075], R-LIB-CDH-010 [4085], R-LIB-CDH-039 [5164]
Use a secondary device with a SPI read capabilities and connect it to CDH MOSI, MISO, SCK, and CS lines on connector J2
In the main() function, uncomment xTaskCreate(vTestSPI,"Test SPI",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
Use the test code and send sample data via SPI. Read the data on the secondary SPI device (logic analyzer or other subsystem board with SPI read capabilities) and ensure the data received by the secondary SPI device matches the data sent by the CDH SPI.
Connect the CDH MOSI, MISO, SCK, and CS outputs from the CDH (located on connecter J2 or through harnessing connectors) to a logic analyzer
The code first initializes the SPI
Then, it sends a SPI message with the following parameters:
CMD: 0x55, 0x56 (hex)
Data: 1, 2, 3, 4, 5 (hex)
After sending, reads the response from the secondary SPI device - if a secondary SPI device sends a response/reply
On the logic analyzer , collect data and run the SPI decode option to decode the received SPI message
The data received and decoded on the logic analyzer matches the data sent by the CDH
Item
T6
Test Item
SPI Rx
Test Specification
Verify that CDH can receive sample data over the SPI lines
Judge Criteria
Ensure that you receive the exact message sent by a secondary SPI device over SPI (could be another CDH) on the CDH receiver end SPI device
Samples
1 CDH board
Test period: 12-Aug-2024 to 12-Aug-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5, and Secondary SPI device
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-008 [4075], R-LIB-CDH-010 [4085], R-LIB-CDH-039 [5164]
Use a secondary device with a SPI read capabilities and connect it to CDH MOSI, MISO, SCK, and CS lines on connector J2. Run the test code which sets up CDH in receive mode to receive data from secondary SPI device over the SPI lines while the secondary device is set up in transmit mode. Send sample data over from the secondary SPI device and read data on the CDH SPI lines. Compare the two data to verify they are the same.
Use a secondary device with a SPI write capabilities and connect it to CDH MOSI, MISO, SCK, and CS lines on connector J2
In the main() function, uncomment xTaskCreate(vTestSPI,"Test SPI",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
In the vTestSPI() function, place a breakpoint on the xTaskResumeAll() line located after the spi_transaction_block_read_without_toggle(...) to allow you to read the test_rd buffer
Use the test code and receive sample data via SPI. Read the data sent by the secondary SPI device (other subsystem board with SPI send capabilities) and ensure the data received by the CDH SPI device matches the data sent by the secondary SPI.
For this test, I used the POWER subsystem as the secondary SPI device and set up the POWER subsystem to send dummy data to CDH via SPI.
Connect the CDH MOSI, MISO, SCK, and CS outputs from the CDH (located on connecter J2 or through harnessing connectors) to POWER subsystem’s MOSI, MISO, SCK, CS pins (in the same order).
The code first initializes the SPI
Then, it sends a SPI message with the following parameters:
CMD: 0x55, 0x56 (hex)
Data: 1, 2, 3, 4, 5 (hex)
After sending, the data reads the response from the secondary SPI device - if a secondary SPI device sends a response/reply
The POWER subsystem was setup to reply to the CDH via SPI with the following data to indicate data received:
Data: REC.
On the CDH, read the test_rd buffer after the SPI read command (spi_transaction_block_read_without_toggle) and compare the read the data in the read buffer (test_rd) to the data sent by the POWER subsystem over SPI
Data received by the CDH over SPI matched the data sent by the POWER subsystem over SPI:
Data sent by POWER: REC.
Item
T7
Test Item
Winbond 1Gb Flash
(FLASH 1)
Test Specification
Verify functionality of the flash memory by reading and writing to all locations of the memory. Also, read and verify the device ID with datasheet
Judge Criteria
Device ID read in SoftConsole should match that on the part’s datasheet
All data written to the flash memory should be the same as the read data
Samples
1 CDH board
Test period: 12-Jul-2024 to 12-Jul-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-018 [4505], R-LIB-CDH-034 [4165], R-LIB-CDH-035 [4169], R-LIB-CDH-039 [5164]
Read the device ID through SoftConsole using the test code and verify the device ID against the part datasheet
In the main() function, uncomment xTaskCreate(vFlashFull,"Test Flash",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the FLASH using the flash_device_init(flash_devices[DATA_FLASH]) function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
In the flash_device_init(flash_devices[DATA_FLASH]) function:
Put a breakpoint on the if statement that reads the DATA_FLASH device ID. The line will be something like: result = w25n_dev_init(......)
Run the code and make sure the device ID read is the correct one
Use the test code and write sample data to all locations of the flash memory. Then, read back all the data and compare it to the written data. Ensure that all the written and read sample data match at each address of the memory.
The code first initializes the DATA_FLASH
Then, it erases all addresses on the DATA_FLASH so they all read 0xFF
Then, it reads all the address back and makes sure they were all successfully erased - if they read 0xFF
Then, it writes 0x0 to the write buffer, with the read buffer set to 0xFF on all addresses.
Then, it writes the write buffer to the FLASH.
Then, it reads each address on the FLASH and populates the read buffer accordingly.
Finally, the code compares the read buffer and write buffer and makes sure that the data matches (read buffer should be updated to 0x0) between the two buffers at all indices and adds to the erase_errors and write_errors value to increment by 1 if data at an address does not match
The corresponding device ID based on the datasheet should be: efaa21
The device ID read from SoftConsole is: efaa21
Successful write and read back of the data written to all addresses on the FLASH
The erase_errors value stayed 0 at the end of the comparison showing that the FLASH was erased successfully
The write_error value stayed 0 at the end of the comparison showing that writing and reading to the FLASH was successfully
Item
T8
Test Item
Winbond 16Mb Flash
(FLASH 2)
Test Specification
Verify functionality of the flash memory by reading and writing to all locations of the memory. Also, read and verify the device ID with datasheet
Judge Criteria
Device ID read in SoftConsole should match that on the part’s datasheet
All data written to the flash memory should be the same as the read data
Samples
1 CDH board
Test period: 23-Jul-2024 to 23-Jul-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-014 [5920], R-LIB-CDH-039 [5164]
Read the device ID through SoftConsole using the test code and verify the device ID against the part datasheet
In the main() function, uncomment xTaskCreate(vFlashFull,"Test Flash",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the FLASH using the flash_device_init(flash_devices[PROGRAM_FLASH]) function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
In the flash_device_init(flash_devices[PROGRAM_FLASH]) function:
Put a breakpoint on the if statement that reads the PROGRAM_FLASH device ID. The line will be something like: result = W25Q_dev_init(......)
Run the code and make sure the device ID read is the correct one
Use the test code and write sample data to all locations of the flash memory. Then, read back all the data and compare it to the written data. Ensure that all the written and read sample data match at each address of the memory.
The code first initializes the PROGRAM_FLASH
Then, it erases all addresses on the PROGRAM_FLASH so they all read 0xFF
Then, it reads all the address back and makes sure they were all successfully erased - if they read 0xFF
Then, it writes 0x0 to the write buffer, with the read buffer set to 0xFF on all addresses.
Then, it writes the write buffer to the FLASH.
Then, it reads each address on the FLASH and populates the read buffer accordingly.
Finally, the code compares the read buffer and write buffer and makes sure that the data matches (read buffer should be updated to 0x0) between the two buffers at all indices and adds to the erase_errors and write_errors value to increment by 1 if data at an address does not match
The corresponding device ID based on the datasheet should be: ef4015
The device ID read from SoftConsole is: ef4015
Successful write and read back of the data written to all addresses on the FLASH
The erase_errors value stayed 0 at the end of the comparison showing that the FLASH was erased successfully
The write_error value stayed 0 at the end of the comparison showing that writing and reading to the FLASH was successfully
Item
T9
Test Item
Everspin 4Mb MRAM
(MRAM 1)
Test Specification
Verify functionality of the MRAM memory by reading and writing to all locations of the memory. Also, read and verify the device ID with datasheet
Judge Criteria
Device ID read in SoftConsole should match that on the part’s datasheet
All data written to the MRAM memory should be the same as the read data
Samples
1 CDH board
Test period: 12-Jul-2024 to 12-Jul-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-036 [4174], R-LIB-CDH-039 [5164]
Software setup:
In the main() function, uncomment xTaskCreate(vTestMRAM,"Test MRAM",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the MRAM using the init_mram() function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
In the init_mram() function:
Uncomment the lines that are:
mr2xh40_write(....)
mr2xh40_read(.....)
for (int ix = 0; ix < MAX_MRAM_ADDRESS; ix += sizeof(write_buffer))
Comment out lines that are:
asMram_write(...)
asMram_read(...)
for (int ix = 0; ix < AS_MAX_MRAM_ADDR; ix += sizeof(write_buffer))
Put a breakpoint on the if statement that reads the device ID
Run the code and make sure the device ID read is the correct one
Use the test code and write sample data to all locations of the MRAM memory. Then, read back all the data and compare it to the written data. Ensure that all the written and read sample data match at each address of the memory.
The code writes 0x55 to the write buffer, then writes 0xFF to the read buffer.
Then, it writes the write buffer to the MRAM.
Then, it reads each address on the MRAM and populates the read buffer accordingly.
Finally, the code compares the read buffer and write buffer and makes sure that the data matches (read buffer should be updated to 0x55) between the two buffers at all indices and sets error_occurred value to 1 if all data do not match
This device provide a software interface to read the device ID through SoftConsole
Successful write and read back of the data written to all addresses on the MRAM
The error_occured value stayed 0 at the end of the comparison
Item
T10
Test Item
Avalanche 16Mb MRAM (MRAM 2)
Test Specification
Verify functionality of the SRAM memory by reading and writing to all locations of the memory. Also, read and verify the device ID with datasheet
Judge Criteria
Device ID read in SoftConsole should match that on the part’s datasheet
All data written to the SRAM memory should be the same as the read data
Samples
1 CDH board
Test period: 12-Jul-2024 to 12-Jul-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-037 [4181], R-LIB-CDH-039 [5164]
Read the device ID through SoftConsole using the test code and verify the device ID against the part datasheet
In the main() function, uncomment xTaskCreate(vTestMRAM,"Test MRAM",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the MRAM using the asMram_init() function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
In the asMram_init() function:
Comment out the lines that are:
mr2xh40_write(....)
mr2xh40_read(.....)
for (int ix = 0; ix < MAX_MRAM_ADDRESS; ix += sizeof(write_buffer))
Uncomment lines that are:
asMram_write(...)
asMram_read(...)
for (int ix = 0; ix < AS_MAX_MRAM_ADDR; ix += sizeof(write_buffer))
Put a breakpoint on the if statement that reads the device ID
Run the code and make sure the device ID read is the correct one
Use the test code and write sample data to all locations of the SRAM memory. Then, read back all the data and compare it to the written data. Ensure that all the written and read sample data match at each address of the memory.
The code writes 0x55 to the write buffer, then writes 0xFF to the read buffer.
Then, it writes the write buffer to the MRAM.
Then, it reads each address on the MRAM and populates the read buffer accordingly.
Finally, the code compares the read buffer and write buffer and makes sure that the data matches (read buffer should be updated to 0x55) between the two buffers at all indices and sets error_occurred value to 1 if all data do not match
Based on part number AS3016204-0108X0PSAY, the device specifications are:
Operating voltage: 3V
Temperature: Industrial Plus (-40 to 105 degC)
Density: 16 Mb
Frequency: 108 MHz
The corresponding device ID based on the datasheet should be:
The device ID read from SoftConsole is:
Successful write and read back of the data written to all addresses on the MRAM
The error_occured value stayed 0 at the end of the comparison
Item
T11
Test Item
12-bit Analog-to-Digital Converter
Test Specification
Verify that the temperature can be read in the SoftConsole software using the thermistor and ADC device. Tweak calibration values of the ADC as necessary to get correct output
Judge Criteria
Read the digital voltage from the ADC in SOftConsole and make sure the reading matches to the voltage difference read across TP23 and GND
Compare the temperature displayed in SoftConsole to the temperature measured using an external probe thermometer
Samples
1 CDH board
Test period: 26-Jul-2024 to 26-Jul-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5, and external probe thermometer
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: None
Verification Activities: R-LIB-CDH-008 [5922], R-LIB-CDH-039 [5164]
Use the test code on CDH and read the voltage on the ADC. Compare the voltage in software to the voltage read on TP23 on the CDH board measure using a multimeter
In the main() function, uncomment xTaskCreate(vTestADC,"adcTest",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the ADC using the initADC() function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
In the vTestADC() function, go into the getBoardTemp() function:
Put a breakpoint on the line that reads the voltage_TP23 value.
Run the code and read the voltage_TP23 value
Physically measure the voltage between TP23 and GND using a multimeter and compare it to the voltage_TP23 value. Both should match
Note: you should leave the ADC to run for about 10 seconds then read the voltage_TP23 value. Reading it too quickly can cause the ADC to read inaccurate values
Convert the voltage on the ADC to temperature using the reference ADC voltage and thermistor resistance and compare the temperature reading in SoftConsole to the temperature reading measured using an external probe thermometer
In the vTestADC() function, go into the getBoardTemp() function:
Put a breakpoint on the line that reads the temp value.
Run the code and read the temp value
Physically measure the temperature as close as possible to the thermistor (RT1 on the CDH board) and compare it to the temp value. Both should match within +/- 1 degrees Celsius
Note: the temperature values may need to be calibrated if they do not match to within +/- 1 degrees Celsius
The value of voltage_TP23 matches the voltage physically measured between TP23 and GND
The CDH ADC voltage readings still need to be calibrated to a temperature. Did not get to test and verify the current calibration on the CDH EM
Item
T12
Test Item
SPI based Real-Time Clock
Test Specification
Verify that the RTC on CDH is able to keep track of time and in sync with the MCU's clock. Also, verify that the RTC keeps track of time using the the coil cell for power when power to the is disconnected.
Judge Criteria
Both MCU clock and RTC clock need to be reading the same time (in sync)
The RTC needs to keep track of time when power to CDH is turned off using power from the coin cell. The time reading should always match the phone’s clock/stopwatch
Samples
1 CDH board
Test period: 09-Aug-2024 to 09-Aug-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5, and stopwatch/clock
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation: Over longer durations, the RTC gains a few seconds and may need to be resynced using GPS time. Need to use GPS to update time every few minutes
Verification Activities: R-LIB-CDH-039 [5164], R-LIB-CDH-041 [5170]
Use test code and set time on the MCU and apply the same time to the RTC.
In the main() function, uncomment xTaskCreate(vTestRTC,"Test RTC",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize the RTC using the init_rtc() function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
Open the vTestRTC function. In the vTestRTC() function:
Set the time to the current time using the Calendar_t buffer
Put a breakpoint on error_occurred = 1 to make sure the time is written correctly to the RTC
Put a breakpoint on read_rtc(&buffer2) to make sure the time is written correctly to the RTC
Note:
ds1393_read_time(&buffer) is the RTC clock
read_rtc(&buffer2) is the MCU clock
Read the output time every few seconds or minutes and verify against a stopwatch/phone clock. Also, verify that both the external RTC and MCU's clock are in sync and read the same time.
The code does the following:
Sets the time to the MCU clock and to the RTC clock
Then, it goes into a for loop and continuously reads both the MCU and RTC clock
Once you have verified that the time updates successfully, comment out the following line in the vTestRTC:
ds1393_write_time(&buffer)
This will prevent any writing to the RTC clock so that the time is reset every time and all you can do is read it
Make sure the code prevents any updates/modifications to the time once set in SoftConsole software and only allows reading the time
Then, turn off the CDH board by disconnecting the power input through the power supply. This will cause the RTC to run on the coin cell. Wait for a few seconds or minutes and then power on the CDH board using the power supply. Read the RTC time while tracking the time on a phone clock. Compare the RTC time to the phone clock or stopwatch and make sure they are the same time. This verifies that the RTC can keep track of time even when CDH board is unpowered/turned on
The external RTC can keep track of time when the CDH is powered on
The external RTC can also keep track off time when the CDH is in an unpowered state, this is done using the power front the backup coin cell
Over longer durations, the RTC gains a few seconds and may need to be resynced using GPS time. The RTC gained 28 seconds in approximately 56 hours, indicating that the external RTC gains approximately 0.5 seconds every hour.
CDH uses UART to RS-485 bridges to transfer data to/from communications transceiver and star tracker. This UART Tx test was done using the RS-485 bridge connected to the output of CDH UART Tx and Rx and the results are presented here. This shows that both UART and RS-485 are functional on CDH.
Item
T13
Test Item
UART Tx
Test Specification
Verify that CDH can send sample data over the UART lines
Judge Criteria
Ensure that you receive the exact message sent by the CDH over UART on the receiver end UART device (could be another CDH or logic analyzer)
Samples
1 CDH board
Test period: 19-Aug-2024 to 19-Aug-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5, and secondary UART device
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation:
Verification Activities: R-LIB-CDH-006 [4275], R-LIB-CDH-008 [4075], R-LIB-CDH-014 [4107], R-LIB-CDH-039 [5164]
Use a secondary device with a UART read capabilities and connect it to CDH UART Rx and Tx lines on connector J2
In the main() function, uncomment xTaskCreate(vTestUARTTx,"Test UART Tx",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize UART using the vInitializeUARTs(MSS_UART_115200_BAUD) function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
Use the test code and send sample data via UART. Read the data on the secondary UART device (logic analyzer or other subsystem board with UART read capabilities) and ensure the data received by the secondary UART device matches the data sent by the CDH UART.
Connect the CDH UART Tx to the secondary UART device’s Rx and connect the CDH UART Rx to the secondary UART device’s Tx (or connect CDH UART Tx and Rx to logic analyzer)
The code first initializes the UART with a baud rate of 115200
Then, it sends a UART message with the following parameters:
In ASCII: Test
In hex: 0x54, 0x65, 0x73, 0x74
On the logic analyzer, collect data and run the Async Serial decode option to decode the received UART message
The data received and decoded on the logic analyzer matches the data sent by the CDH over UART
CDH uses UART to RS-485 bridges to transfer data to/from communications transceiver and star tracker. This UART Tx test was done using the RS-485 bridge connected to the output of CDH UART Tx and Rx and the results are presented here. This shows that both UART and RS-485 are functional on CDH.
Item
T14
Test Item
UART Rx
Test Specification
Verify that CDH can receive data over the UART lines
Judge Criteria
Ensure that you receive the exact message sent by a secondary UART device to the CDH over UART
Samples
1 CDH board
Test period: 21-Aug-2024 to 21-Aug-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, computer with Libero 2022.2 and SmartDebug V2022.2, SoftConsole V6.5, and secondary UART device
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation:
Verification Activities: R-LIB-CDH-006 [4275], R-LIB-CDH-008 [4075], R-LIB-CDH-014 [4107], R-LIB-CDH-039 [5164]
Use a secondary device with a UART send capabilities and connect it to CDH UART Rx and Tx lines on connector J2
In the main() function, uncomment xTaskCreate(vTestUARTTx,"Test UART Tx",....) function
Every other callback to xTaskCreate(.....) can be comment out in the main() function
Initialize SPI using the init_spi() function under prvSetupHardware()
Initialize UART using the vInitializeUARTs(MSS_UART_115200_BAUD) function under prvSetupHardware()
You can turn off initialization for everything else under prvSetupHardware()
In the vTestUARTTx() function:
Put a breakpoint on the line reads the MSS_UART_get_rx(...);
Use the test code and receive and read sample data via UART. Read the data on the CDH and ensure the data sent by the secondary UART device matches the data received on the CDH UART.
Connect the CDH UART Tx to the secondary UART device’s Rx and connect the CDH UART Rx to the secondary UART device’s Tx
The code first initializes the UART with a baud rate of 115200
Then, it reads a UART message into the read buffer, buf_Rx
On the CDH, read the buf_Rx buffer after the MSS_UART_get_rx(...) read command and compare the data in the read buffer (buf_Rx) to the data sent by the secondary UART subsystem
The data received and decoded by the CDH on the Rx buffer matches the data sent by a secondary UART device (Arduino Uno) over UART
Item
T15
Test Item
Voltage regulators
Test Specification
Verify that the CDH is functional with input power between 6.0 volts and 7.3 volts. Also ensure that the CDH can regulate the input voltage to 3.3 volts and 1.2 volts for input power between 6.0 volts and 7.3 volts.
Judge Criteria
Ensure that the CDH turns on and performs regular operations while varying the input voltage
Ensure that the ouput of the 3.3V and 1.2V regulators are 3.3V and 1.2V respectively with varying input voltage
Samples
1 CDH board
Test period: 10-Oct-2024 to 10-Oct-2024
Test equipment: CDH board, CDH JTAG programmer, logic analyzer, variable power supply, multimeter, SoftConsole V6.5
Major Problem: None
Warning: Use the ESD safe mat for all these tests
Recommendation:
Verification Activities: R-LIB-CDH-040 [5166]
Use a variable power supply and set the output voltage on the power supply to 6.0 V
Incrementally increase the output voltage on the power supply by 0.1 V until 7.3 V. For each increment:
Let the CDH bootup and run for at least 30 seconds to ensure it is under normal operations
Using a multimeter, record the voltage across the one of the four vias located next to C18 (3.3 V) and TP2 (GND)
Using a multimeter, record the voltage across U10 (pin labeled 1.2 V) and TP2 (GND)
Compare the voltages to ensure that output of the 3.3 V regulator and 1.2 V regulator is withing +/-0.1V
Run sample code on the CDH and ensure that the CDH is performing as expected for all increments of input voltage from 6.0 V to 7.3 V
For this test I ran a code that would cause the CDH to send dummy data via SPI
Probe the SPI MISO, MOSI, CS, and SCK pins on a logic analyzer
Ensure that the data sent by the CDH is received correctly on the logic analyzer
The data received and decoded on the logic analyzer matched the data sent by the CDH for all voltage increments from 6.0 V to 7.3 V
Both the 3.3V and 1.2 V voltage regulator successfully regulated the voltages to 3.3 V (+/- 0.1V) and 1.2 V (+/- 0.1V) for all voltage increments from 6.0 V to 7.3 V
Item
P1
Test Item
CDH PCB Visual Inspection
Test Specification
Inspect the CDH board for any deformation, discontinuity in visible traces, and cracks on the boards.
Judge Criteria
There shall be no such defects or flaws stated in the test specifications in any of the received boards.
Samples
1 CDH board
Test period: 12-Jul-2024 to 12-Jul-2024
Test equipment: CDH board
Major Problem: None
Warning: Use the ESD safe mat for all these inspections
Recommendation:
Verification Activities: G-LIB-CDH-001 [4088], G-LIB-CDH-002 [4056]
Visually inspect the CDH PCB assembly for:
physical damage
missing parts
poor soldering
flatness/no bending/no board flexing
Verify any fasteners that CDH uses are hex drive
After visual inspection, the CDH EM board did not have any physical damage, missing parts, poor soldering, and the board was flat with no bending/no flex
CDH subsystem does not require any fasteners on the Circuit Card Assembly (CCA). Fasteners needed on CDH are to mount the CDH to the structure shell and to connect the harnessing cables to the CDH CCA which is handled by the structure subsystem and harnessing subsystem respectively.
Item
P2
Test Item
CDH PCB Dimension Fit Check
Test Specification
Measure the width, the height, and the thickness of the board. Also, the height of the highest component must be measured.
Judge Criteria
Width: 90±0.25 mm
Length: 90±0.25 mm
Thickness: 1.52±0.25 mm
Highest component: 4±0.1 mm
Samples
1 CDH board
Test period: 04-Nov-2024 to 04-Nov-2024
Test equipment: CDH board, calipers
Major Problem: None
Warning: Use the ESD safe mat for all these inspections
Recommendation:
Verification Activities: R-LIB-CDH-xxx [yyyy]
Using calipers, measure the overall length, width, and height of the CDH board. Compare the measure data to the ones in structure module CAD. Dimensions should be as follows:
Width: 90±0.25 mm
Length: 90±0.25 mm
Thickness: 1.52±0.25 mm
Highest component: 4±0.1 mm excluding the on-board connector
Then, using calipers, measure the center to center distance of the CDH board's mounting holes. Also, measure the diameter of the mounting holes. Compare the measure data to the ones in structure module CAD. Dimensions should be as follows:
Center-to-center distance: 81±0.1 mm
Mounting hole diameter: 2.5±0.1 mm
The measured CDH dimension are as follows:
Width: 90.07 mm
Length: 90.08 mm
Thickness: 1.90 mm
Highest component: +5.60 mm from board's top surface and -5.60 mm from board's bottom surface
Center-to-center distance: 80.96 mm
Mounting hole diameter: 2.45 mm
All dimensions, except the board thickness, are within allowable tolerance
Need to change the board thickness to be 1.52 mm for the flight models
Item
P3
Test Item
CDH PCB Mass Inspection
Test Specification
Measure the mass of the board without any connectors on it and with the connectors on it separately
Judge Criteria
Mass: 108 grams
Samples
1 CDH board
Test period: 04-Nov-2024 to 04-Nov-2024
Test equipment: CDH board, weighing scale
Major Problem: None
Warning: Use the ESD safe mat for all these inspections
Recommendation:
Verification Activities: R-LIB-CDH-xxx [yyyy]
Using a weighing scale accurate to at least ±1 gram, measure mass of the CDH board with the on-board harnessing connectors. Compare the measure data to the ones in the mass budget and ensure the measured mass is less than the allocated mass budget. Mass should be as follows:
Mass: less than 108 grams
The CDH mass with on-board harnessing connectors is 41.89 grams, which is less than the allowed mass budget of 108 grams