Merge branch 'master' of github.com:sanni/cartreader into cps3

This commit is contained in:
herzmx 2024-09-12 15:09:57 -06:00
commit c301d610ba
19 changed files with 9284 additions and 3235 deletions

View File

@ -460,7 +460,7 @@ uint32_t calculateCRC(char* fileName, char* folder, unsigned long offset) {
/******************************************
CRC Functions for Atari, Fairchild, Ody2, Arc, etc. modules
*****************************************/
#if (defined(ENABLE_ODY2) || defined(ENABLE_ARC) || defined(ENABLE_FAIRCHILD) || defined(ENABLE_MSX) || defined(ENABLE_POKE) || defined(ENABLE_2600) || defined(ENABLE_7800) || defined(ENABLE_C64) || defined(ENABLE_VECTREX) || defined(ENABLE_NES) || defined(ENABLE_LYNX) || defined(ENABLE_ATARI8) || defined(ENABLE_BALLY) || defined(ENABLE_LEAP) || defined(ENABLE_LJ) || defined(ENABLE_LJPRO) || defined(ENABLE_PV1000) || defined(ENABLE_PYUUTA) || defined(ENABLE_RCA) || defined(ENABLE_TI99) || defined(ENABLE_TRS80) || defined(ENABLE_VIC20) || defined(ENABLE_VSMILE))
#if (defined(ENABLE_ODY2) || defined(ENABLE_ARC) || defined(ENABLE_FAIRCHILD) || defined(ENABLE_MSX) || defined(ENABLE_POKE) || defined(ENABLE_2600) || defined(ENABLE_7800) || defined(ENABLE_C64) || defined(ENABLE_VECTREX) || defined(ENABLE_NES) || defined(ENABLE_LYNX) || defined(ENABLE_ATARI8) || defined(ENABLE_BALLY) || defined(ENABLE_LEAP) || defined(ENABLE_LJ) || defined(ENABLE_LJPRO) || defined(ENABLE_PV1000) || defined(ENABLE_PYUUTA) || defined(ENABLE_RCA) || defined(ENABLE_TI99) || defined(ENABLE_TRS80) || defined(ENABLE_VIC20) || defined(ENABLE_VSMILE) || defined(ENABLE_CPS3))
void printCRC(char* checkFile, uint32_t* crcCopy, unsigned long offset) {
uint32_t crc = calculateCRC(checkFile, folder, offset);
@ -883,8 +883,6 @@ boolean checkCartSelection(FsFile& database, void (*readData)(FsFile&, void*), v
return false;
}
#if ( \
defined(ENABLE_ODY2) || defined(ENABLE_ARC) || defined(ENABLE_FAIRCHILD) || defined(ENABLE_MSX) || defined(ENABLE_POKE) || defined(ENABLE_2600) || defined(ENABLE_5200) || defined(ENABLE_7800) || defined(ENABLE_C64) || defined(ENABLE_VECTREX) || defined(ENABLE_NES) || defined(ENABLE_GBX) || defined(ENABLE_BALLY) || defined(ENABLE_PV1000) || defined(ENABLE_PYUUTA) || defined(ENABLE_RCA) || defined(ENABLE_TRS80) || defined(ENABLE_VIC20) || defined(ENABLE_LEAP) || defined(ENABLE_LJ) || defined(ENABLE_VSMILE) || defined(ENABLE_TI99) || defined(ENABLE_ATARI8) || defined(ENABLE_CPS3))
void printInstructions() {
println_Msg(FS(FSTRING_EMPTY));
@ -988,7 +986,6 @@ int navigateMenu(__attribute__((unused)) int min, __attribute__((unused)) int ma
return selectedNumber;
}
#endif /* (ENABLE_OLED | ENABLE_LCD) */
#endif /* ENABLE_<CORES> */
#if (defined(ENABLE_OLED) || defined(ENABLE_LCD))
void starting_letter__subDraw(byte selection, byte line) {
@ -2344,8 +2341,8 @@ void setup() {
}
// Start new log if file is too big
if (myLog.fileSize() > 262144) {
EEPROM_readAnything(0, foldern);
EEPROM_readAnything(0, foldern);
if ((myLog.fileSize() > 262144) && (foldern < 9999) && (foldern > 0)){
sprintf(folder, "%s%d%s", "OSCR_LOG_", foldern, ".txt");
foldern = foldern + 1;
EEPROM_writeAnything(0, foldern);

View File

@ -49,11 +49,10 @@
/****/
/* [ Clock Generator ---------------------------------------------- ]
Enable this if you have the clock generator module. This will
automatically be enabled if you selected HW2 or newer above.
Disable this if you don't have the clock generator module.
*/
//#define ENABLE_CLOCKGEN
#define ENABLE_CLOCKGEN
/****/
@ -535,7 +534,7 @@
with all Cart Readers
*/
//#define OPTION_N64_FASTCRC
#define OPTION_N64_FASTCRC
/****/
@ -566,29 +565,21 @@
#define ENABLE_NEOPIXEL
#define ENABLE_ROTARY
//# define rotate_counter_clockwise
#define ENABLE_CLOCKGEN
#define OPTION_N64_FASTCRC
#define OPTION_WS_ADAPTER_V2
#endif
#if (defined(HW2) || defined(HW3))
#define ENABLE_OLED
#define ENABLE_BUTTON2
#define ENABLE_CLOCKGEN
#define ENABLE_CA_LED
#define OPTION_N64_FASTCRC
#endif
#if defined(HW1)
#define ENABLE_OLED
//#define ENABLE_CLOCKGEN
//#define OPTION_N64_FASTCRC
#endif
#if defined(SERIAL_MONITOR)
#define ENABLE_SERIAL
//#define ENABLE_CLOCKGEN
//#define OPTION_N64_FASTCRC
#endif
/* Firmware updater only works with HW3 and HW5 */

View File

@ -268,28 +268,34 @@ void mdMenu() {
resetFlash_MD();
idFlash_MD();
resetFlash_MD();
print_Msg(F("Flash ID: "));
println_Msg(flashid_str);
if (flashid == 0xC2F1) {
println_Msg(F("MX29F1610 detected"));
flashSize = 2097152;
} else if (flashid == 0x017E) {
println_Msg(F("S29GL064N detected"));
flashSize = 4194304;
} else {
print_Msg(F("Flash ID: "));
println_Msg(flashid_str);
print_FatalError(F("Error: Unknown flashrom"));
}
println_Msg("Erasing...");
display_Update();
eraseFlash_MD();
resetFlash_MD();
blankcheck_MD();
write29F1610_MD();
if (flashid == 0xC2F1)
write29F1610_MD();
else if (flashid == 0x017E)
write29GL_MD();
resetFlash_MD();
delay(1000);
resetFlash_MD();
delay(1000);
println_Msg("Verifying...");
verifyFlash_MD();
// Set CS(PH3) HIGH
PORTH |= (1 << 3);
println_Msg(FS(FSTRING_EMPTY));
// Prints string out of the common strings array either with or without newline
print_STR(press_button_STR, 1);
display_Update();
@ -1976,6 +1982,11 @@ void write29F1610_MD() {
// Set data pins to output
dataOut_MD();
//Initialize progress bar
uint32_t processedProgressBar = 0;
uint32_t totalProgressBar = (uint32_t)fileSize / 2;
draw_progressbar(0, totalProgressBar);
// Fill sdBuffer with 1 page at a time then write it repeat until all bytes are written
int d = 0;
for (unsigned long currByte = 0; currByte < fileSize / 2; currByte += 64) {
@ -2002,6 +2013,90 @@ void write29F1610_MD() {
// Check if write is complete
delayMicroseconds(100);
busyCheck_MD();
// update progress bar
processedProgressBar += 64;
draw_progressbar(processedProgressBar, totalProgressBar);
}
// Set data pins to input again
dataIn_MD();
// Close the file:
myFile.close();
} else {
print_STR(open_file_STR, 1);
display_Update();
}
}
void write29GL_MD() {
// Create filepath
sprintf(filePath, "%s/%s", filePath, fileName);
print_STR(flashing_file_STR, 0);
print_Msg(filePath);
println_Msg(F("..."));
display_Update();
// Open file on sd card
if (myFile.open(filePath, O_READ)) {
// Get rom size from file
fileSize = myFile.fileSize();
if (fileSize > flashSize) {
print_FatalError(file_too_big_STR);
}
// Set data pins to output
dataOut_MD();
//Initialize progress bar
uint32_t processedProgressBar = 0;
uint32_t totalProgressBar = (uint32_t)fileSize;
draw_progressbar(0, totalProgressBar);
for (unsigned long currSdBuffer = 0; currSdBuffer < fileSize; currSdBuffer += 512) {
myFile.read(sdBuffer, 512);
// Blink led
if (currSdBuffer % 4096 == 0) {
blinkLED();
}
for (int currWriteBuffer = 0; currWriteBuffer < 512; currWriteBuffer += 32) {
// Two unlock cycles
writeFlash_MD(0x555, 0xaa);
writeFlash_MD(0x2aa, 0x55);
// Write Buffer Load command to Sector Address
writeFlash_MD((currSdBuffer + currWriteBuffer) / 2, 0x25);
// Sector Address, Word count
writeFlash_MD((currSdBuffer + currWriteBuffer) / 2, 16 - 1);
// Load buffer
word currWord;
for (byte currByte = 0; currByte < 32; currByte += 2) {
currWord = ((sdBuffer[currWriteBuffer + currByte] & 0xFF) << 8) | (sdBuffer[currWriteBuffer + currByte + 1] & 0xFF);
writeFlash_MD((currSdBuffer + currWriteBuffer + currByte) / 2, currWord);
}
// Write buffer
writeFlash_MD((currSdBuffer + currWriteBuffer + 32 - 2) / 2, 0x29);
// Check if write is complete
// Set data pins to input
dataIn_MD();
// Read the status register
word statusReg = readFlash_MD((currSdBuffer + currWriteBuffer + 32 - 2) / 2);
while ((statusReg | 0xFF7F) != (currWord | 0xFF7F)) {
statusReg = readFlash_MD((currSdBuffer + currWriteBuffer + 32 - 2) / 2);
}
// Set data pins to output
dataOut_MD();
}
// update progress bar
processedProgressBar += 512;
draw_progressbar(processedProgressBar, totalProgressBar);
}
// Set data pins to input again

View File

@ -101,7 +101,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
{ 78, 3, 3, 5, 5, 0, 0 }, // irem 74hc161/32
{ 79, 1, 2, 2, 3, 0, 0 }, // NINA-03/06 by AVE [UNLICENSED]
{ 80, 3, 3, 5, 6, 0, 1 }, // taito x1-005 [prgram r/w]
{ 82, 3, 3, 5, 6, 0, 1 }, // taito x1-017 [prgram r/w]
{ 82, 3, 3, 5, 6, 0, 1 }, // taito x1-017 wrong bank order [prgram r/w]
// 84 - bad mapper, not used
{ 85, 3, 5, 0, 5, 0, 1 }, // vrc7 [sram r/w]
{ 86, 3, 3, 4, 4, 0, 0 }, // jaleco jf-13 (moero pro yakyuu)
@ -174,7 +174,8 @@ static const struct mapper_NES PROGMEM mapsize[] = {
{ 246, 5, 5, 7, 7, 0, 0 }, // C&E Feng Shen Bang [UNLICENSED]
// 248 - bad mapper, not used
{ 255, 4, 7, 5, 8, 0, 0 }, // 110-in-1 multicart (same as 225) [UNLICENSED]
{ 446, 0, 8, 0, 0, 0, 0 } // Mindkids SMD172B_FGPA submapper 0 & 1
{ 446, 0, 8, 0, 0, 0, 0 }, // Mindkids SMD172B_FGPA submapper 0 & 1
{ 552, 0, 5, 0, 6, 0, 0 } // Taito X1-017 actual bank order
};
const char _file_name_no_number_fmt[] PROGMEM = "%s.%s";
@ -2286,19 +2287,17 @@ void readPRG(bool readrom) {
case 80: // 128K
case 207: // 256K [CART SOMETIMES NEEDS POWERCYCLE]
banks = int_pow(2, prgsize) * 2;
for (size_t i = 0; i < banks; i += 2) {
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0x7EFA, i); // PRG Bank 0 ($8000-$9FFF)
write_prg_byte(0x7EFC, i + 1); // PRG Bank 1 ($A000-$BFFF)
dumpBankPRG(0x0, 0x4000, base);
dumpBankPRG(0x0, 0x2000, base);
}
break;
case 82: // 128K
banks = int_pow(2, prgsize) * 2;
for (size_t i = 0; i < banks; i += 2) {
write_prg_byte(0x7EFA, i << 2); // PRG Bank 0 ($8000-$9FFF)
write_prg_byte(0x7EFB, (i + 1) << 2); // PRG Bank 1 ($A000-$BFFF)
dumpBankPRG(0x0, 0x4000, base); // 8K Banks ($8000-$BFFF)
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0x7EFA, i << 2); // PRG Bank 0 ($8000-$9FFF)
dumpBankPRG(0x0, 0x2000, base); // 8K Banks ($8000-$BFFF)
}
break;
@ -2736,18 +2735,24 @@ void readPRG(bool readrom) {
break;
case 446:
{
banks = int_pow(2, prgsize) * 2;
write_prg_byte(0x5003, 0);
write_prg_byte(0x5005, 0);
for (uint8_t i = 0; i < banks; i++) { // 8192 for 64MiB
write_prg_byte(0x5002, i >> 8); // outer bank LSB
write_prg_byte(0x5001, i); // outer bank MSB
write_prg_byte(0x8000, 0);
dumpBankPRG(0x0, 0x2000, base);
}
break;
banks = int_pow(2, prgsize) * 2;
write_prg_byte(0x5003, 0);
write_prg_byte(0x5005, 0);
for (uint8_t i = 0; i < banks; i++) { // 8192 for 64MiB
write_prg_byte(0x5002, i >> 8); // outer bank LSB
write_prg_byte(0x5001, i); // outer bank MSB
write_prg_byte(0x8000, 0);
dumpBankPRG(0x0, 0x2000, base);
}
break;
case 552:
banks = int_pow(2, prgsize) * 2;
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0x7EFA, ((i & 0x01) << 5) | ((i & 0x02) << 3) | ((i & 0x04) << 1) | ((i & 0x08) >> 1) | ((i & 0x10) >> 3) | ((i & 0x20) >> 5)); // PRG Bank 0 ($8000-$9FFF)
dumpBankPRG(0x0, 0x2000, base); // 8K Banks ($8000-$BFFF)
}
break;
}
if (!readrom) {
myFile.flush();
@ -3296,13 +3301,13 @@ void readCHR(bool readrom) {
case 80: // 128K/256K
case 82: // 128K/256K
case 207: // 128K [CART SOMETIMES NEEDS POWERCYCLE]
banks = int_pow(2, chrsize) * 4;
for (size_t i = 0; i < banks; i += 4) {
write_prg_byte(0x7EF2, i); // CHR Bank 2 [REGISTERS 0x7EF0/0x7EF1 WON'T WORK]
write_prg_byte(0x7EF3, i + 1); // CHR Bank 3
write_prg_byte(0x7EF4, i + 2); // CHR Bank 4
write_prg_byte(0x7EF5, i + 3); // CHR Bank 5
dumpBankCHR(0x0, 0x2000);
case 552:
banks = int_pow(2, chrsize) * 2;
write_prg_byte(0x7EF6, 0x00); // CHR mode [2x 2KiB banks at $0000-$0FFF]
for (size_t i = 0; i < banks; i += 2) {
write_prg_byte(0x7EF0, i << 1);
write_prg_byte(0x7EF1, (i + 1) << 1);
dumpBankCHR(0x0, 0x1000);
}
break;
@ -4651,4 +4656,4 @@ void A29040B_writeFLASH() {
#endif
//******************************************
// End of File
//******************************************
//******************************************

View File

@ -0,0 +1,149 @@
(footprint "Header - VSELECT - Switch Pad"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at 1.5 0 0)
(unlocked yes)
(layer "F.Fab")
(uuid "e990701a-bcd3-4e87-938f-905cc73f4049")
(effects
(font
(size 1 1)
(thickness 0.15)
)
(justify left)
)
)
(property "Value" "Header - VSELECT - Switch Pad"
(at 0 -3 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "57f87a13-d07d-4241-9113-a8ae9813bd54")
(effects
(font
(size 1 1)
(thickness 0.15)
)
(justify left)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "b8f04fcc-87a3-414f-bb9b-2ecc7118b59b")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "3d49b41b-232c-446a-a7d2-7e9406628a16")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "9acea4ec-050a-4091-b9fb-b5af0f663691")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr through_hole exclude_from_pos_files exclude_from_bom)
(fp_line
(start -0.5 -0.9)
(end 0.5 -0.9)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(net 1079758)
(uuid "16e9f1bd-2634-4050-88dc-9b77c48ccec4")
)
(fp_line
(start -0.5 0.9)
(end 0.5 0.9)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(net 1079758)
(uuid "f526eac6-e115-46ef-a7f0-3801423d2324")
)
(fp_arc
(start -0.5 0.9)
(mid -1.4 0)
(end -0.5 -0.9)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(net 1079758)
(uuid "856b8498-a652-42ab-a3b2-e7e22b982e9b")
)
(fp_arc
(start 0.5 -0.9)
(mid 1.4 0)
(end 0.5 0.9)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(net 1079758)
(uuid "a90e5060-0c66-4477-b686-7b6331ee07d7")
)
(fp_poly
(pts
(arc
(start 0.5 0.9)
(mid 1.4 0)
(end 0.5 -0.9)
)
(arc
(start -0.5 -0.9)
(mid -1.4 0)
(end -0.5 0.9)
)
)
(stroke
(width 0.12)
(type solid)
)
(fill none)
(layer "F.CrtYd")
(net 1079758)
(uuid "a7838a50-bc03-4678-97c5-261b02963260")
)
(pad "1" thru_hole oval
(at 0 0 90)
(size 1.5 2.5)
(drill 0.9)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "7e08b2cb-d202-4b0c-bca7-e40031c1593d")
)
)

View File

@ -0,0 +1,499 @@
(footprint "IC - VSELECT - TPS2113"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "Combination footprint supports 8-TSSOP and 8-SON; has paste only for 8-SON!")
(tags "TPS2113")
(property "Reference" "REF**"
(at 0 -1.7 0)
(layer "F.SilkS")
(uuid "b88a0179-0761-4be2-96b7-8c61f1f96e59")
(effects
(font
(size 0.5 0.5)
(thickness 0.12)
)
(justify bottom)
)
)
(property "Value" "TPS2113"
(at 0 1.6 0)
(layer "F.Fab")
(hide yes)
(uuid "06ebc777-3196-4aaf-bbe7-13efe7fdad77")
(effects
(font
(size 0.5 0.5)
(thickness 0.1)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "3ef351ab-973f-4a0f-bed5-a8677d25a1c0")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "9ccfc8fe-ab64-4a24-9220-ab49938f01bd")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "38482317-8c00-445f-a32b-16a9f0ae6e2a")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(clearance 0.15)
(attr smd)
(fp_line
(start -1.9 -1.559999)
(end 1.45 -1.559999)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "08a1f8ac-6ee4-400e-a107-97b5e2e0b9f7")
)
(fp_line
(start -1.4 1.56)
(end 1.4 1.56)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "1cc6c8eb-057a-4b98-bb71-ad400f0224f5")
)
(fp_poly
(pts
(xy -3.049999 -1.5) (xy -3.289999 -1.83) (xy -2.809999 -1.83) (xy -3.049999 -1.5)
)
(stroke
(width 0.12)
(type solid)
)
(fill solid)
(layer "F.SilkS")
(uuid "90d02910-b0b5-455b-b9cf-79a5d97bd0e6")
)
(fp_line
(start -4.274999 -1.974996)
(end -4.274999 1.975002)
(stroke
(width 0.15)
(type solid)
)
(layer "F.CrtYd")
(uuid "ad3685e9-b74c-4c5d-91af-e408afcccd8b")
)
(fp_line
(start -4.274999 1.975002)
(end 4.275001 1.975002)
(stroke
(width 0.15)
(type solid)
)
(layer "F.CrtYd")
(uuid "87be0132-56c4-4a96-94b0-572eb7aeeacd")
)
(fp_line
(start 4.275001 -1.974996)
(end -4.274999 -1.974996)
(stroke
(width 0.15)
(type solid)
)
(layer "F.CrtYd")
(uuid "c14ed152-172c-423f-8883-5491ac43e712")
)
(fp_line
(start 4.275001 -1.974996)
(end 4.275001 -1.974996)
(stroke
(width 0.15)
(type solid)
)
(layer "F.CrtYd")
(uuid "ad17112a-a282-4d03-9599-e5071930fd52")
)
(fp_line
(start 4.275001 1.975002)
(end 4.275001 -1.974996)
(stroke
(width 0.15)
(type solid)
)
(layer "F.CrtYd")
(uuid "e2284efd-d624-4d28-a16f-258f233bb4d0")
)
(fp_line
(start -2.249998 -1.549999)
(end 2.250001 -1.549999)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "cf795279-a1c3-4f8e-8ee6-c18fb6e4022e")
)
(fp_line
(start -2.249998 1.549999)
(end -2.249998 -1.549999)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "a5ee63ff-b116-48bd-9f0b-9a0f0351ba21")
)
(fp_line
(start -2.249998 1.549999)
(end 2.250001 1.549999)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "083e42b3-9708-45fd-8a79-c4bfdebafc6e")
)
(fp_line
(start -1.5 -0.45)
(end -1 -0.95)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "5646e25c-d36f-4b3f-8c17-e7d606ab68ee")
)
(fp_line
(start -1.5 1.05)
(end -1.5 -0.45)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "0cb38e21-0942-4639-b1e4-c1c547ef99c2")
)
(fp_line
(start -1 -0.95)
(end 1.5 -0.95)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "140c2234-00e5-41fc-aa35-2e83495cf582")
)
(fp_line
(start 1.5 -0.95)
(end 1.5 1.05)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "3aa39632-a4f3-44e0-9af6-65a39825bcb7")
)
(fp_line
(start 1.5 1.05)
(end -1.5 1.05)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "d637cbcc-1ebf-4cc4-a681-de3ee58fd49f")
)
(fp_line
(start 2.250001 1.549999)
(end 2.250001 -1.549999)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "e58b3075-2f37-49c9-a05d-efca560b6aaa")
)
(fp_circle
(center -1.35 -0.649999)
(end -0.850001 -0.649999)
(stroke
(width 0.1)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "39c76878-2dab-4c60-b192-dd619b9adad7")
)
(fp_text_box "*** NOTICE ***\nSolder paste has been added for the 8-SON package only. If using the 8-TSSOP package for machine assembly or with a stencil you must edit the pads and enable the solder paste layer for the 8-TSSOP as well as disable it for the 8-SON pads."
(start -4.3 2.1)
(end 4.3 4.3)
(layer "Cmts.User")
(uuid "8bc7aa09-7521-4ccd-aea3-531f96869560")
(effects
(font
(size 0.2 0.2)
(thickness 0.03175)
)
(justify top)
)
(border yes)
(stroke
(width 0.03175)
(type dot)
)
)
(pad "" smd roundrect
(at 0 -0.63)
(size 1.47 1.06)
(layers "F.Paste")
(roundrect_rratio 0.04716981132)
(uuid "30fe792c-f94a-45c1-a54a-64c7a1b14ae4")
)
(pad "" smd roundrect
(at 0 0.63)
(size 1.47 1.06)
(layers "F.Paste")
(roundrect_rratio 0.04716981132)
(uuid "c22ac406-1ad9-4a41-9758-aca31eb2dc2e")
)
(pad "1" smd roundrect
(at -3.049999 -0.974999 270)
(size 0.45 1.6)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.111111358)
(uuid "d256954f-70fb-494c-81c8-a5f244595343")
)
(pad "1" smd roundrect
(at -1.3975 -0.98)
(size 0.6 0.3)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.1666666667)
(solder_mask_margin 0.07)
(uuid "fa06c472-f92f-4c1e-929f-f77349ea0fc3")
)
(pad "2" smd roundrect
(at -3.049999 -0.324998 270)
(size 0.45 1.6)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.111111358)
(uuid "b41b859e-a101-4f5b-86a9-b615346717ab")
)
(pad "2" smd roundrect
(at -1.3975 -0.33)
(size 0.6 0.3)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.1666666667)
(solder_mask_margin 0.07)
(thermal_bridge_width 0.2)
(thermal_gap 0.15)
(uuid "9d7a0234-f48e-43a7-8d8e-1771318f9f08")
)
(pad "3" smd roundrect
(at -3.049999 0.325001 270)
(size 0.45 1.6)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.111111358)
(uuid "3786d78b-61c5-44d8-829e-cfba0c4be785")
)
(pad "3" smd roundrect
(at -1.3975 0.32)
(size 0.6 0.3)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.1666666667)
(solder_mask_margin 0.07)
(uuid "a8888280-162c-458f-a00b-2f36593c3fa5")
)
(pad "4" smd roundrect
(at -3.049999 0.975002 270)
(size 0.45 1.6)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.111111358)
(uuid "34947aeb-958c-44f8-a866-c34e8483c279")
)
(pad "4" smd roundrect
(at -1.3975 0.97)
(size 0.6 0.3)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.1666666667)
(solder_mask_margin 0.07)
(uuid "a98fffc4-d374-4da8-9047-36ce40640094")
)
(pad "5" smd roundrect
(at 1.4025 0.97)
(size 0.6 0.3)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.1666666667)
(solder_mask_margin 0.07)
(thermal_bridge_width 0.2)
(thermal_gap 0.15)
(uuid "361c2713-c195-455b-ae37-5c7485d7fd28")
)
(pad "5" smd roundrect
(at 3.050002 0.975002 270)
(size 0.45 1.6)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.111111358)
(uuid "505b3364-2156-4dcd-9c03-00379635931a")
)
(pad "6" smd roundrect
(at 1.4025 0.32)
(size 0.6 0.3)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.1666666667)
(solder_mask_margin 0.07)
(uuid "2dd85cb1-e369-4997-b2d8-eecb0b14269e")
)
(pad "6" smd roundrect
(at 3.050002 0.325001 270)
(size 0.45 1.6)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.111111358)
(uuid "809def39-07a8-48db-997f-9bf556e23926")
)
(pad "7" smd roundrect
(at 1.4025 -0.33)
(size 0.6 0.3)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.1666666667)
(solder_mask_margin 0.07)
(uuid "529bbc54-c373-4b88-9cf2-0ae501d108d1")
)
(pad "7" smd roundrect
(at 3.050002 -0.324998 270)
(size 0.45 1.6)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.111111358)
(uuid "d6f11747-ef29-4700-8968-5a69d977c61d")
)
(pad "8" smd roundrect
(at 1.4025 -0.98)
(size 0.6 0.3)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.1666666667)
(solder_mask_margin 0.07)
(uuid "74ab520a-fa20-43ad-b91f-57b0c50830d8")
)
(pad "8" smd roundrect
(at 3.050002 -0.974999 270)
(size 0.45 1.6)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.111111358)
(uuid "1178c938-7563-444a-8d90-506b7ef62a95")
)
(pad "9" thru_hole circle
(at -0.575 0)
(size 0.4 0.4)
(drill 0.2)
(property pad_prop_heatsink)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(thermal_bridge_width 0.2)
(thermal_gap 0.12)
(uuid "a0bd05f4-1b9e-430c-afb3-351dfddc04ee")
)
(pad "9" thru_hole circle
(at 0 -0.95)
(size 0.4 0.4)
(drill 0.2)
(property pad_prop_heatsink)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(thermal_bridge_width 0.2)
(thermal_gap 0.12)
(uuid "a11bd611-37a7-492e-beda-b8c395da6037")
)
(pad "9" smd roundrect
(at 0 0)
(size 1.6 2.4)
(property pad_prop_heatsink)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.03125)
(solder_mask_margin 0.07)
(thermal_bridge_width 0.4)
(thermal_gap 0.2)
(uuid "06803922-4635-4680-96c6-5c6d919714de")
)
(pad "9" thru_hole circle
(at 0 0.95)
(size 0.4 0.4)
(drill 0.2)
(property pad_prop_heatsink)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(thermal_bridge_width 0.2)
(thermal_gap 0.12)
(uuid "c5eda055-b8ff-4d4b-9902-ba7283d2018c")
)
(pad "9" thru_hole circle
(at 0.575 0)
(size 0.4 0.4)
(drill 0.2)
(property pad_prop_heatsink)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(thermal_bridge_width 0.2)
(thermal_gap 0.12)
(uuid "b0332c6f-7e75-4f26-b7a4-016c37df7240")
)
(model "${KICAD7_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-8_4.4x3mm_P0.65mm.step"
(hide yes)
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
(model "${KIPRJMOD}/../footprints/!OSCR.3dshapes/TPS2113ADRBR-1.step"
(hide yes)
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
(model "${KIPRJMOD}/../footprints/!OSCR.3dshapes/TPS2113ADRBR-0.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -90 0 0)
)
)
)

View File

@ -1,49 +1,45 @@
### Important: The Vselect module PCB is currently untested and may require design revisions to function.
# VSELECT: Automatic Voltage Selection Module
##
The Vselect module automates voltage selection on HW5. It is to be soldered in place of the voltage selection switch. You cannot use the Vselect module and a power LED at the same time.
The VSELECT module automates voltage selection on HW5 by allowing the firmware to set the voltage. The module version is intended to be soldered in place of the voltage selection switch. You cannot use the VSELECT module and a power LED at the same time.
## Ordering the PCB and Installing the components
The Vselect module requires SMD/SMC (surface-mounted devices/components) soldering. The pads have been extended slightly to aid in hand-soldering. However, because many people are uncomfortable with hand-soldering such small components automated assembly files suitable for use with JLCPCB have been included. This does significantly increase the cost of the module, however. To use assembly on JLCPCB, upload the gerber as normal and then select to include assembly. On the next page upload `VSelect_bom.csv` and `VSelect-top-pos.csv`. Ensure the part placement looks sane. You may need to manually rotate components. Make sure the dots line up on the chip as well. It should look like this:
![](https://i.imgur.com/SJk2NCl.png)
The VSELECT module requires SMD/SMC (surface-mounted devices/components) soldering. The pads have been extended slightly to aid in hand-soldering. While files suitable for use with JLCPCB's PCBA service have been included, these are unsuitable for most people to use due to the minimum order quantity. If you want fewer than 10 modules it will be cheaper to order them from someone selling pre-built ones.
## Installation
To install the module place it over the voltage switch contacts with the component side facing up and solder it in place. You can use stripped wires or pins to bridge between the boards. Once soldered in place you must jump 2 wires off of the board. JP1 should go to pin D38 on the Arduino. The nearest point to jump to is where the resistor for the power LED normally would be installed. Use the rightmost pin next to the screw terminal. After that, you must connect JP2 to ground. There are many places you could tap into ground but the closest is the screw terminal, just be careful not to close the hole which would get in the way of installing a screw. If you want an easier location, the unused screw terminal under the Arduino is probably the easiest.
Instructions to build as well as to install the module have moved [to the wiki](https://github.com/sanni/cartreader/wiki/Automatic-Voltage-Selection).
## Configuration
The module requires code to function properly. The OSCR should still power on even without the code changes but the voltage will not automatically toggle. To enable automatic toggling, locate this bit of code:
```
//******************************************
// HW CONFIGS
//******************************************
#if (defined(HW4) || defined(HW5))
// #define enable_vselect
#define enable_LCD
/*==== HARDWARE MODULES ===========================================*/
/* [ Automatic Voltage Selection ---------------------------------- ]
Enable this if you have the VSELECT module.
*/
//#define ENABLE_VSELECT
```
...and change it to:
```
//******************************************
// HW CONFIGS
//******************************************
#if (defined(HW4) || defined(HW5))
#define enable_vselect
#define enable_LCD
/*==== HARDWARE MODULES ===========================================*/
/* [ Automatic Voltage Selection ---------------------------------- ]
Enable this if you have the VSELECT module.
*/
#define ENABLE_VSELECT
```
After that simply update/program/flash your Arduino/OSCR as normal. Make sure you enable this every time you update. You can test that voltage switching is occurring with a multimeter by checking between ground and VCC.
## Notes
The module starts in 5V mode and switches to 3V after the Arduino finishes booting. Because of this, you should not install 3V carts before powering the system on. Once on the main menu, the system should be running on 3V.
The flash function does not currently have a menu to select a voltage. One should be added at a later time.
## Updating
When the OSCR is using VSELECT-enabled firmware there are a few extra steps you need to take when flashing firmware. First, before connecting the OSCR to a computer, remove the SD card. Next, connect the OSCR to your computer and wait. Once it prompts you, press the button to set the voltage to 5V. Although you can flash the ATmega2560 while running at 3.3V it does not always work and seems more likely to cause the firmware to randomly be corrupt (sometimes right away, sometimes not for a few days). Although you can just reflash the firmware to it to resolve it, having to deal with it is rather inconvenient.
## Troubleshooting
If the 3.3V rail is not powered (i.e. you forgot to solder the jumper on the LCD) then when the module tries to switch to that it will power off the VCC rail. This will appear as a reboot loop where you'll see it briefly power on and then immediately power off only to immediately power on again. This is because the module starts in 5V mode and switches to 3V after the system boots and tells it to do so.
If the 3.3V rail is not powered (i.e. you forgot to solder the jumper on the LCD) then when the module tries to switch to that it will power off the VCC rail. This will appear as a reboot loop where you'll see it briefly power on and then immediately power off only to immediately power on again. This is because the module starts in 5V mode and switches to 3.3V after the system boots and tells it to do so.

View File

@ -1,6 +1,6 @@
Designator,Val,Package,Mid X,Mid Y,Rotation,Layer
"C1","0.1 uF","C_0402_1005Metric_Pad0.74x0.62mm_HandSolder",37.750000,-19.490000,180.000000,top
"C2","0.1 uF","C_0402_1005Metric_Pad0.74x0.62mm_HandSolder",37.717500,-21.490000,0.000000,top
"C3","10 uF","C_0402_1005Metric_Pad0.74x0.62mm_HandSolder",37.750000,-20.490000,0.000000,top
"R1","550","R_0402_1005Metric_Pad0.72x0.64mm_HandSolder",37.720000,-23.800000,180.000000,top
"U1","TPS2113PW","Texas_Instruments-TPS2113PW-Level_A",31.550000,-20.790000,0.000000,top
Designator,Mid X,Mid Y,Rotation,Layer
C1,37.1275,-19.47,180.0,top
C2,37.1275,-21.47,0.0,top
C3,37.1275,-20.47,0.0,top
R1,37.14,-22.48,180.0,top
U1,31.55,-20.79,0.0,top

1 Designator Val Mid X Package Mid Y Rotation Layer
2 C1 0.1 uF 37.750000 37.1275 C_0402_1005Metric_Pad0.74x0.62mm_HandSolder -19.490000 -19.47 180.000000 180.0 top
3 C2 0.1 uF 37.717500 37.1275 C_0402_1005Metric_Pad0.74x0.62mm_HandSolder -21.490000 -21.47 0.000000 0.0 top
4 C3 10 uF 37.750000 37.1275 C_0402_1005Metric_Pad0.74x0.62mm_HandSolder -20.490000 -20.47 0.000000 0.0 top
5 R1 550 37.720000 37.14 R_0402_1005Metric_Pad0.72x0.64mm_HandSolder -23.800000 -22.48 180.000000 180.0 top
6 U1 TPS2113PW 31.550000 31.55 Texas_Instruments-TPS2113PW-Level_A -20.790000 -20.79 0.000000 0.0 top

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,14 @@
{
"board": {
"active_layer": 37,
"active_layer_preset": "All Layers",
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
@ -65,6 +67,12 @@
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "VSelect.kicad_prl",
"version": 3

View File

@ -1,15 +1,19 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.09999999999999999,
"copper_line_width": 0.19999999999999998,
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.1,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
@ -20,7 +24,7 @@
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
@ -45,7 +49,7 @@
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 0.508
"min_clearance": 0.16
}
},
"diff_pair_dimensions": [
@ -62,20 +66,28 @@
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
@ -85,9 +97,14 @@
"padstack": "error",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
@ -103,24 +120,98 @@
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.0,
"min_copper_edge_clearance": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_clearance": 0.11,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.25,
"min_hole_clearance": 0.254,
"min_hole_to_hole": 0.4,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.19999999999999998,
"min_via_annular_width": 0.049999999999999996,
"min_via_diameter": 0.39999999999999997,
"min_text_height": 0.5,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.2,
"min_track_width": 0.11,
"min_via_annular_width": 0.13,
"min_via_diameter": 0.25,
"solder_mask_clearance": 0.0,
"solder_mask_min_width": 0.0,
"solder_mask_to_copper_clearance": 0.005,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
@ -130,7 +221,15 @@
"zones_allow_external_fillets": false,
"zones_use_no_outline": true
},
"layer_presets": []
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
@ -317,15 +416,21 @@
"bus_label_syntax": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
@ -335,6 +440,7 @@
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
@ -354,8 +460,8 @@
"net_settings": {
"classes": [
{
"bus_width": 12.0,
"clearance": 0.15,
"bus_width": 12,
"clearance": 0.12,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
@ -365,14 +471,14 @@
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.25,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6.0
"track_width": 0.16,
"via_diameter": 0.5,
"via_drill": 0.2,
"wire_width": 6
},
{
"bus_width": 12.0,
"clearance": 0.1,
"bus_width": 12,
"clearance": 0.12,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
@ -380,49 +486,126 @@
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Power",
"nets": [
"+3.3V",
"+5V",
"GND",
"VCC"
],
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.45,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6.0
"track_width": 0.24,
"via_diameter": 0.5,
"via_drill": 0.2,
"wire_width": 6
}
],
"meta": {
"version": 2
"version": 3
},
"net_colors": null
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "Power",
"pattern": "+3.3V"
},
{
"netclass": "Power",
"pattern": "+5V"
},
{
"netclass": "Power",
"pattern": "GND"
},
{
"netclass": "Power",
"pattern": "VCC"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"name": "Grouped By Value",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [
{
"name": "Description",
"name": "LCSC",
"url": false,
"visible": false
},
{
"name": "JLCPCB",
"name": "Part",
"url": false,
"visible": false
}
@ -434,6 +617,11 @@
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
@ -455,14 +643,19 @@
"page_layout_descr_file": "",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"ec18acd3-6576-4c7e-a623-74d94852c1cc",
""
"Root"
]
],
"text_variables": {}

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,5 @@
"Item","Qty","Reference(s)","Value","LibPart","Footprint","Datasheet","Code JEDEC","Datasheet Version","Description","IN1 IN2 Input VoltageMaxV","IN1 IN2 Input VoltageMinV","IN1 Output CurrentMaxA","IN1 rDSonTypmOhm","IN2 Output CurrentMaxA","IN2 rDSonTypOhms","JLCPCB","Mounting Technology","Number of Inputs","Package Description","Package Version","Sub Family","category","ciiva ids","imported","library id","manufacturer","package","release date","rohs","vault revision"
"1","2","C1, C2","0.1 uF","Device:C","Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder","~","","","CL05B104KB54PNC","","","","","","","C307331","","","","","","","","","","","","","",""
"2","1","C3","10 uF","Device:C","Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder","~","","","CL05A106MQ5NUNC","","","","","","","C15525","","","","","","","","","","","","","",""
"3","2","JP1, TP1","VSELECT","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"4","2","JP2, TP2","GND","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"5","1","JP3","3.3V","Connector:TestPoint","Personal:Vpower-Switch-Pad","~","","","","","","","","","","","","","","","","","","","","","","","",""
"6","1","JP4","5V","Connector:TestPoint","Personal:Vpower-Switch-Pad","~","","","","","","","","","","","","","","","","","","","","","","","",""
"7","1","JP5","VCC","Connector:TestPoint","Personal:Vpower-Switch-Pad","~","","","","","","","","","","","","","","","","","","","","","","","",""
"8","1","R1","550","Device:R","Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder","~","","","RC0402JR-07560RL","","","","","","","C137858","","","","","","","","","","","","","",""
"9","1","TP3","3.3V","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"10","1","TP4","5V","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"11","1","TP5","VCC","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"12","1","U1","TPS2113PW","Added:TPS2113PW","Personal:Texas_Instruments-TPS2113PW-Level_A","http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=TPS2113&fileType=pdf","MO-153","SLVS446","","5.5","2.8","1.25","84","1.25","0.084","","Surface Mount","2","8-Pin Plastic Thin Small Outline Package 3 x 4.4 mm Body ,0.65 mm Pitch","revG, Feb-2011","Power Multiplexer (MUX)","IC","1435368","yes","8d418d7fa91867a0","Texas Instruments","PW0008A","1464590589","Yes","9D6D1550-8F4D-4794-945B-26B7B47CC6E6"
Designator,Footprint,Quantity,Value,LCSC Part #
"C1, C2",0402,2,0.1u,C1525
C3,0402,1,10u,C15525
R1,0402,1,560R,C25123
U1,IC - VSELECT - TPS2113,1,TPS211x,C354512

1 Item Designator Qty Footprint Reference(s) Quantity Value LibPart LCSC Part # Datasheet Code JEDEC Datasheet Version Description IN1 IN2 Input VoltageMaxV IN1 IN2 Input VoltageMinV IN1 Output CurrentMaxA IN1 rDSonTypmOhm IN2 Output CurrentMaxA IN2 rDSonTypOhms JLCPCB Mounting Technology Number of Inputs Package Description Package Version Sub Family category ciiva ids imported library id manufacturer package release date rohs vault revision
2 1 C1, C2 2 Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder 0402 C1, C2 2 0.1 uF 0.1u Device:C C1525 ~ CL05B104KB54PNC C307331
3 2 C3 1 Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder 0402 C3 1 10 uF 10u Device:C C15525 ~ CL05A106MQ5NUNC C15525
4 3 R1 2 TestPoint:TestPoint_Pad_2.0x2.0mm 0402 JP1, TP1 1 VSELECT 560R Connector:TestPoint C25123 ~
5 4 U1 2 TestPoint:TestPoint_Pad_2.0x2.0mm IC - VSELECT - TPS2113 JP2, TP2 1 GND TPS211x Connector:TestPoint C354512 ~
5 1 Personal:Vpower-Switch-Pad JP3 3.3V Connector:TestPoint ~
6 1 Personal:Vpower-Switch-Pad JP4 5V Connector:TestPoint ~
7 1 Personal:Vpower-Switch-Pad JP5 VCC Connector:TestPoint ~
8 1 Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder R1 550 Device:R ~ RC0402JR-07560RL C137858
9 1 TestPoint:TestPoint_Pad_2.0x2.0mm TP3 3.3V Connector:TestPoint ~
10 1 TestPoint:TestPoint_Pad_2.0x2.0mm TP4 5V Connector:TestPoint ~
11 1 TestPoint:TestPoint_Pad_2.0x2.0mm TP5 VCC Connector:TestPoint ~
12 1 Personal:Texas_Instruments-TPS2113PW-Level_A U1 TPS2113PW Added:TPS2113PW http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=TPS2113&fileType=pdf MO-153 SLVS446 5.5 2.8 1.25 84 1.25 0.084 Surface Mount 2 8-Pin Plastic Thin Small Outline Package 3 x 4.4 mm Body ,0.65 mm Pitch revG, Feb-2011 Power Multiplexer (MUX) IC 1435368 yes 8d418d7fa91867a0 Texas Instruments PW0008A 1464590589 Yes 9D6D1550-8F4D-4794-945B-26B7B47CC6E6

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
{"EXTRA_LAYERS": "", "EXTEND_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false}

View File

@ -0,0 +1,4 @@
(fp_lib_table
(version 7)
(lib (name "!OSCRMisc")(type "KiCad")(uri "${KIPRJMOD}/../footprints/!OSCRMisc.pretty")(options "")(descr "OSCR Misc. Footprints"))
)

View File

@ -0,0 +1,4 @@
(sym_lib_table
(version 7)
(lib (name "!OSCRMisc")(type "KiCad")(uri "${KIPRJMOD}/../symbols/!OSCRMisc.kicad_sym")(options "")(descr "OSCR Misc. Symbols"))
)