├── README.md ├── audprog.VC.db ├── audprog.exe ├── audprog.sdf ├── audprog.sln ├── audprog.v12.suo ├── audprog ├── AUD.cpp ├── AUD.h ├── Debug │ ├── audprog.Build.CppClean.log │ └── audprog.log ├── ReadMe.txt ├── Release │ ├── audprog.Build.CppClean.log │ ├── audprog.log │ └── audprog.obj ├── SPI_EE.cpp ├── SPI_EE.h ├── audprog.cbp ├── audprog.cbp.save-failed ├── audprog.cpp ├── audprog.h ├── audprog.layout ├── audprog.vcxproj ├── audprog.vcxproj.filters ├── audprog.vcxproj.user ├── ftd2xx.h ├── ftd2xx.lib ├── stdafx.cpp ├── stdafx.h └── targetver.h └── hw ├── audprog_v2-F.Cu.pdf ├── audprog_v2-cache.lib ├── audprog_v2.kicad_pcb ├── audprog_v2.net ├── audprog_v2.pdf ├── audprog_v2.pro ├── audprog_v2.sch └── page_layout.kicad_wks /README.md: -------------------------------------------------------------------------------- 1 | # audprog 2 | AUD interface read/write utility for SH7055 and SH7058 CPUs based on FTDI's FT232R/FT2232x chips 3 | 4 | connections: 5 | FTDI - SH705x CPU 6 | DBUS0 - Not Connected 7 | DBUS1 - AUD_DATA1 8 | DBUS2 - AUD_DATA0 9 | DBUS3 - AUD_SYNC 10 | DBUS4 - AUD_RST 11 | DBUS5 - AUD_DATA3 12 | DBUS6 - AUD_CK 13 | DBUS7 - AUD_DATA2 14 | 15 | FTDI - ST95xxx EEPROM 16 | DBUS0 - DO 17 | DBUS3 - DI 18 | DBUS4 - CS 19 | DBUS6 - CK 20 | 21 | HW schematics in KiCAD format is also inclueded in .\hw\ folder -------------------------------------------------------------------------------- /audprog.VC.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/audprog.VC.db -------------------------------------------------------------------------------- /audprog.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/audprog.exe -------------------------------------------------------------------------------- /audprog.sdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/audprog.sdf -------------------------------------------------------------------------------- /audprog.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2013 for Windows Desktop 4 | VisualStudioVersion = 12.0.40629.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audprog", "audprog\audprog.vcxproj", "{79CE91B5-8758-40B7-A7BB-563B870FFD47}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {79CE91B5-8758-40B7-A7BB-563B870FFD47}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {79CE91B5-8758-40B7-A7BB-563B870FFD47}.Debug|Win32.Build.0 = Debug|Win32 16 | {79CE91B5-8758-40B7-A7BB-563B870FFD47}.Release|Win32.ActiveCfg = Release|Win32 17 | {79CE91B5-8758-40B7-A7BB-563B870FFD47}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /audprog.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/audprog.v12.suo -------------------------------------------------------------------------------- /audprog/AUD.cpp: -------------------------------------------------------------------------------- 1 | #include "audprog.h" 2 | 3 | unsigned long AUD_readLWord(FT_HANDLE ftDevice, unsigned long a) { 4 | unsigned long addr = a; 5 | unsigned long lData = 0; 6 | unsigned long b = 0; 7 | 8 | unsigned char cData[5 * 2 * 2 + 2] = {}; 9 | unsigned char rData[4 * 2 * 3 + 3] = {}; 10 | 11 | // filling up command sequense 12 | AUD_cDataFill(cData, sizeof(cData), 0xA0, a); 13 | 14 | //filling up read sequense 15 | AUD_rDataFill(rData, sizeof(rData)); 16 | 17 | //send command DWORD read 18 | FT_SetBitMode(ftDevice, 0xFF, FT_BITMODE_SYNC_BITBANG); // all pins are outputs 19 | FT_Write(ftDevice, cData, sizeof(cData), &b); 20 | FT_Read(ftDevice, cData, sizeof(cData), &b); 21 | 22 | AUD_Poll(ftDevice); // polling for READY state 23 | 24 | //reading DWORD 25 | // FT_SetBitMode(ftDevice, 0x0F, FT_BITMODE_SYNC_BITBANG); 26 | FT_Write(ftDevice, rData, sizeof(rData), &b); 27 | FT_Read(ftDevice, rData, sizeof(rData), &b); 28 | for (int q = 3; q < sizeof(rData); q += 3) { 29 | lData <<= 4; 30 | lData |= 0x0F & AUD_bitUnSwap(rData[q] & AUD_DMASK); 31 | } 32 | return ((lData & 0x0F0F0F0F) << 4) | ((lData & 0xF0F0F0F0) >> 4); 33 | } 34 | 35 | unsigned char AUD_readByte(FT_HANDLE ftDevice, unsigned long a) { 36 | unsigned long addr = a; 37 | unsigned long bData = 0; 38 | unsigned long b = 0; 39 | 40 | unsigned char cData[5 * 2 * 2 + 2] = {}; 41 | unsigned char rData[1 * 2 * 3 + 3] = {}; 42 | 43 | // filling up command sequense 44 | AUD_cDataFill(cData, sizeof(cData), 0x80, a); 45 | 46 | //filling up read sequense 47 | AUD_rDataFill(rData, sizeof(rData)); 48 | 49 | //send command BYTE read 50 | FT_SetBitMode(ftDevice, 0xFF, FT_BITMODE_SYNC_BITBANG); // all pins are outputs 51 | FT_Write(ftDevice, cData, sizeof(cData), &b); 52 | FT_Read(ftDevice, cData, sizeof(cData), &b); 53 | 54 | AUD_Poll(ftDevice); // polling for READY state 55 | 56 | //reading BYTE 57 | FT_Write(ftDevice, rData, sizeof(rData), &b); 58 | FT_Read(ftDevice, rData, sizeof(rData), &b); 59 | 60 | for (int q = 3; q < sizeof(rData); q += 3) { 61 | bData <<= 4; 62 | bData |= 0x0F & AUD_bitUnSwap(rData[q] & AUD_DMASK); 63 | } 64 | return ((bData & 0x0F) << 4) | ((bData & 0xF0) >> 4); 65 | } 66 | 67 | unsigned short AUD_readWord(FT_HANDLE ftDevice, unsigned long a) { 68 | unsigned long addr = a; 69 | unsigned short wData = 0; 70 | unsigned long b = 0; 71 | 72 | unsigned char cData[5 * 2 * 2 + 2] = {}; 73 | unsigned char rData[2 * 2 * 3 + 3] = {}; 74 | 75 | // filling up command sequense 76 | AUD_cDataFill(cData, sizeof(cData), 0x90, a); 77 | 78 | //filling up read sequense 79 | AUD_rDataFill(rData, sizeof(rData)); 80 | 81 | //send command WORD read 82 | FT_SetBitMode(ftDevice, 0xFF, FT_BITMODE_SYNC_BITBANG); // all pins are outputs 83 | FT_Write(ftDevice, cData, sizeof(cData), &b); 84 | FT_Read(ftDevice, cData, sizeof(cData), &b); 85 | 86 | AUD_Poll(ftDevice); // polling for READY state 87 | 88 | //reading BYTE 89 | FT_Write(ftDevice, rData, sizeof(rData), &b); 90 | FT_Read(ftDevice, rData, sizeof(rData), &b); 91 | 92 | for (int q = 3; q < sizeof(rData); q += 3) { 93 | wData <<= 4; 94 | wData |= 0x0F & AUD_bitUnSwap(rData[q] & (AUD_DMASK)); 95 | } 96 | return ((wData & 0x0F0F) << 4) | ((wData & 0xF0F0) >> 4); 97 | } 98 | 99 | unsigned char AUD_writeByte(FT_HANDLE ftDevice, unsigned long a, unsigned char bData) { 100 | 101 | unsigned long b = 0; 102 | unsigned char cwData[5 * 2 * 2 + 2 + 1 * 2 * 2] = {}; 103 | 104 | // filling up command sequense 105 | AUD_cwDataFill(cwData, sizeof(cwData), 0xC0, a, bData); 106 | 107 | //BYTE write 108 | FT_SetBitMode(ftDevice, 0xFF, FT_BITMODE_SYNC_BITBANG); // all pins are outputs 109 | FT_Write(ftDevice, cwData, sizeof(cwData), &b); 110 | FT_Read(ftDevice, cwData, sizeof(cwData), &b); 111 | 112 | AUD_Poll(ftDevice); // polling for READY state 113 | AUD_wTick(ftDevice); 114 | return 0; 115 | } 116 | 117 | unsigned char AUD_writeWord(FT_HANDLE ftDevice, unsigned long a, unsigned int wData) { 118 | unsigned long b = 0; 119 | unsigned char cwData[5 * 2 * 2 + 2 + 2 * 2 * 2] = {}; 120 | 121 | // filling up command sequense 122 | AUD_cwDataFill(cwData, sizeof(cwData), 0xD0, a, wData); 123 | 124 | //WORD write 125 | FT_SetBitMode(ftDevice, 0xFF, FT_BITMODE_SYNC_BITBANG); // all pins are outputs 126 | FT_Write(ftDevice, cwData, sizeof(cwData), &b); 127 | FT_Read(ftDevice, cwData, sizeof(cwData), &b); 128 | 129 | AUD_Poll(ftDevice); // polling for READY state 130 | AUD_wTick(ftDevice); 131 | return 0; 132 | } 133 | 134 | unsigned char AUD_writeLWord(FT_HANDLE ftDevice, unsigned long a, unsigned long lData) { 135 | unsigned long b = 0; 136 | unsigned char cwData[5 * 2 * 2 + 2 + 4 * 2 * 2] = {}; 137 | 138 | // filling up command sequense 139 | AUD_cwDataFill(cwData, sizeof(cwData), 0xE0, a, lData); 140 | 141 | //DWORD write 142 | FT_SetBitMode(ftDevice, 0xFF, FT_BITMODE_SYNC_BITBANG); // all pins are outputs 143 | FT_Write(ftDevice, cwData, sizeof(cwData), &b); 144 | FT_Read(ftDevice, cwData, sizeof(cwData), &b); 145 | 146 | AUD_Poll(ftDevice); // polling for READY state 147 | AUD_wTick(ftDevice); 148 | return 0; 149 | } 150 | 151 | void AUD_wTick(FT_HANDLE ftDevice) { 152 | unsigned long b = 0; 153 | unsigned char tData[] = { 154 | _AUD_RST | _AUD_SYNC, 155 | _AUD_RST | _AUD_SYNC | AUD_CK, 156 | _AUD_RST | _AUD_SYNC, 157 | _AUD_RST | _AUD_SYNC | AUD_CK 158 | }; 159 | 160 | FT_SetBitMode(ftDevice, 0xFF, FT_BITMODE_SYNC_BITBANG); // all pins outputs 161 | FT_Write(ftDevice, tData, sizeof(tData), &b); 162 | FT_Read(ftDevice, tData, sizeof(tData), &b); 163 | } 164 | 165 | void AUD_Poll(FT_HANDLE ftDevice) { // pooling for READY 166 | unsigned long b = 0; 167 | unsigned char pollStatus = 0; 168 | int a = 0; 169 | unsigned char pollData[] = { 170 | _AUD_RST, 171 | _AUD_RST | AUD_CK, 172 | _AUD_RST, 173 | _AUD_RST | AUD_CK, 174 | _AUD_RST, 175 | _AUD_RST | AUD_CK, 176 | _AUD_RST, 177 | _AUD_RST | AUD_CK, 178 | _AUD_RST, 179 | _AUD_RST | AUD_CK, 180 | _AUD_RST, 181 | _AUD_RST | AUD_CK 182 | }; 183 | 184 | FT_SetBitMode(ftDevice, 0xff & (~AUD_DMASK), FT_BITMODE_SYNC_BITBANG); // AUD_D0..3 are inputs 185 | unsigned char r = 1; 186 | while (r) { 187 | FT_Write(ftDevice, pollData, sizeof(pollData), &b); 188 | FT_Read(ftDevice, pollData, sizeof(pollData), &b); 189 | for (int q = 0; q < sizeof(pollData); q++) { 190 | pollStatus = pollData[q] & AUD_DMASK; 191 | // Sleep(200); 192 | // printf("pool status 0x%02x\n", pollStatus); 193 | if (pollStatus == AUD_D0) { 194 | r = 0; 195 | break; 196 | } 197 | if (pollStatus == (AUD_D0 | AUD_D2)) { 198 | printf("Bus error!\n"); 199 | r = 0; 200 | break; 201 | } 202 | if (pollStatus == (AUD_D0 | AUD_D1)) { 203 | printf("Command error!\n"); 204 | r = 0; 205 | break; 206 | } 207 | } 208 | a++; 209 | if (a > 50) { 210 | printf_s("Uknown AUD bus error! Status 0x%02x Please on/off the ECU. \n", pollStatus); 211 | break; 212 | } 213 | } 214 | } 215 | 216 | void AUD_SHSetRAMmode(FT_HANDLE ftDevice) { 217 | unsigned long b = 0; 218 | unsigned char pData[] = { 219 | _AUD_SYNC | _AUD_RST | AUD_CK, 220 | _AUD_SYNC, 221 | _AUD_SYNC | AUD_CK, 222 | _AUD_SYNC, 223 | _AUD_SYNC | AUD_CK, 224 | _AUD_SYNC, 225 | _AUD_SYNC | AUD_CK, 226 | _AUD_SYNC, 227 | _AUD_SYNC | AUD_CK, 228 | _AUD_SYNC, 229 | _AUD_SYNC | AUD_CK, 230 | _AUD_SYNC, 231 | _AUD_SYNC | _AUD_RST, 232 | _AUD_SYNC | _AUD_RST | AUD_CK, 233 | _AUD_SYNC | _AUD_RST, 234 | _AUD_SYNC | _AUD_RST | AUD_CK 235 | }; 236 | FT_SetBitMode(ftDevice, 0xFF, FT_BITMODE_SYNC_BITBANG); // all pins are outputs 237 | FT_Write(ftDevice, pData, sizeof(pData), &b); 238 | FT_Read(ftDevice, pData, sizeof(pData), &b); 239 | } 240 | 241 | 242 | unsigned char * AUD_cDataFill(unsigned char * cData, unsigned int cDataSize, unsigned char cmd, unsigned long addr) { 243 | // filling up command sequense 244 | cData[0] = _AUD_RST | _AUD_SYNC; 245 | cData[1] = _AUD_RST | _AUD_SYNC | AUD_CK; 246 | for (int q = 2; q < 6; q++) { 247 | cData[q] = _AUD_RST | AUD_bitSwap(cmd & 0x0f); 248 | q++; 249 | cData[q] = _AUD_RST | AUD_CK | AUD_bitSwap(cmd & 0x0f); 250 | cmd >>= 4; 251 | } 252 | for (unsigned int q = 6; q < cDataSize - 2; q++) { 253 | cData[q] = _AUD_RST | AUD_bitSwap(addr & 0x0f); 254 | q++; 255 | cData[q] = _AUD_RST | AUD_CK | AUD_bitSwap(addr & 0x0f); 256 | addr >>= 4; 257 | }; 258 | cData[cDataSize - 2] = cData[cDataSize - 4]; // additional clock after CMD 259 | cData[cDataSize - 1] = cData[cDataSize - 3]; 260 | 261 | return cData; 262 | } 263 | 264 | unsigned char * AUD_cwDataFill(unsigned char * cwData, unsigned int cwDataSize, unsigned char cmd, unsigned long addr, unsigned long data) { 265 | // filling up command sequense 266 | cwData[0] = _AUD_RST | _AUD_SYNC; 267 | cwData[1] = _AUD_RST | _AUD_SYNC | AUD_CK; 268 | 269 | for (int q = 2; q < 2*2*2 + 2; q++) { 270 | cwData[q] = _AUD_RST | AUD_bitSwap(cmd & 0x0f); 271 | q++; 272 | cwData[q] = _AUD_RST | AUD_CK | AUD_bitSwap(cmd & 0x0f); 273 | cmd >>= 4; 274 | } 275 | 276 | for (unsigned int q = 6; q < (4*2*2) + 6; q++) { 277 | cwData[q] = _AUD_RST | AUD_bitSwap(addr & 0x0f); 278 | q++; 279 | cwData[q] = _AUD_RST | AUD_CK | AUD_bitSwap(addr & 0x0f); 280 | addr >>= 4; 281 | }; 282 | 283 | for (unsigned int q = 22; q < cwDataSize; q++) { 284 | cwData[q] = _AUD_RST | AUD_bitSwap((unsigned char)data & 0x0f); 285 | q++; 286 | cwData[q] = _AUD_RST | AUD_CK | AUD_bitSwap((unsigned char)data & 0x0f); 287 | data >>= 4; 288 | }; 289 | 290 | return cwData; 291 | } 292 | 293 | unsigned char * AUD_wDataFill(unsigned char * wData, unsigned int wDataSize, unsigned long data) { 294 | for (unsigned int q = 0; q < wDataSize; q++) { 295 | wData[q] = _AUD_RST | AUD_bitSwap(data & 0x0F); 296 | q++; 297 | wData[q] = _AUD_RST | AUD_CK | AUD_bitSwap(data & 0x0F); 298 | data >>= 4; 299 | }; 300 | return wData; 301 | } 302 | 303 | unsigned char * AUD_rDataFill(unsigned char * rData, unsigned int rDataSize) { 304 | for (unsigned int q = 0; q < rDataSize; q++) { 305 | rData[q] = _AUD_RST | _AUD_SYNC; 306 | q++; 307 | rData[q] = _AUD_RST | _AUD_SYNC | AUD_CK; 308 | q++; 309 | rData[q] = _AUD_RST | _AUD_SYNC | AUD_CK; 310 | }; 311 | return rData; 312 | } 313 | 314 | unsigned char AUD_bitSwap(unsigned char in) { 315 | unsigned char out = 0; 316 | if (in & (1 << 0)) out |= AUD_D0; 317 | if (in & (1 << 1)) out |= AUD_D1; 318 | if (in & (1 << 2)) out |= AUD_D2; 319 | if (in & (1 << 3)) out |= AUD_D3; 320 | return out; 321 | } 322 | 323 | unsigned char AUD_bitUnSwap(unsigned char in) { 324 | unsigned char out = 0; 325 | if (in & AUD_D0) out |= (1 << 0); 326 | if (in & AUD_D1) out |= (1 << 1); 327 | if (in & AUD_D2) out |= (1 << 2); 328 | if (in & AUD_D3) out |= (1 << 3); 329 | return out; 330 | } -------------------------------------------------------------------------------- /audprog/AUD.h: -------------------------------------------------------------------------------- 1 | #ifndef __AUD_H_ 2 | #define __AUD_H_ 3 | 4 | #include "stdafx.h" 5 | #include "ftd2xx.h" 6 | 7 | // AUD pin definition 8 | 9 | 10 | // NEW HW 11 | 12 | #define _AUD_RST (1<<4) 13 | #define _AUD_SYNC (1<<3) 14 | 15 | #define AUD_CK (1<<6) 16 | #define AUD_D0 (1<<2) 17 | #define AUD_D1 (1<<1) 18 | #define AUD_D2 (1<<7) 19 | #define AUD_D3 (1<<5) 20 | 21 | #define AUD_DMASK (AUD_D0 | AUD_D1 | AUD_D2 | AUD_D3) 22 | 23 | 24 | // OLD HW 25 | 26 | /* 27 | #define _AUD_RST (1<<0) 28 | #define _AUD_SYNC (1<<1) 29 | 30 | #define AUD_CK (1<<3) 31 | #define AUD_D0 (1<<4) 32 | #define AUD_D1 (1<<6) 33 | #define AUD_D2 (1<<7) 34 | #define AUD_D3 (1<<5) 35 | 36 | */ 37 | 38 | // AUD routines prototypes 39 | unsigned long AUD_readLWord(FT_HANDLE ftDevice, unsigned long a); 40 | unsigned char AUD_readByte(FT_HANDLE ftDevice, unsigned long a); 41 | unsigned short AUD_readWord(FT_HANDLE ftDevice, unsigned long a); 42 | 43 | unsigned char AUD_writeByte(FT_HANDLE ftDevice, unsigned long a, unsigned char bData); 44 | unsigned char AUD_writeWord(FT_HANDLE ftDevice, unsigned long a, unsigned int wData); 45 | unsigned char AUD_writeLWord(FT_HANDLE ftDevice, unsigned long a, unsigned long lData); 46 | 47 | unsigned char AUD_bitSwap(unsigned char in); 48 | unsigned char AUD_bitUnSwap(unsigned char in); 49 | unsigned char * AUD_cDataFill(unsigned char * cData, unsigned int cDataSize, unsigned char cmd, unsigned long addr); 50 | unsigned char * AUD_cwDataFill(unsigned char * cData, unsigned int cDataSize, unsigned char cmd, unsigned long addr, unsigned long data); 51 | unsigned char * AUD_rDataFill(unsigned char * rData, unsigned int rDataSize); 52 | unsigned char * AUD_wDataFill(unsigned char * wData, unsigned int wDataSize, unsigned long data); 53 | 54 | void AUD_Poll(FT_HANDLE ftDevice); 55 | void AUD_SHSetRAMmode(FT_HANDLE ftDevice); 56 | void AUD_wTick(FT_HANDLE ftDevice); 57 | 58 | #endif -------------------------------------------------------------------------------- /audprog/Debug/audprog.Build.CppClean.log: -------------------------------------------------------------------------------- 1 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\stdafx.obj 2 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\spi_ee.obj 3 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\aud.obj 4 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\audprog.obj 5 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\vc120.pdb 6 | d:\documents\dropbox\projects\pc\audprog\debug\audprog.exe 7 | d:\documents\dropbox\projects\pc\audprog\debug\audprog.pdb 8 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\audprog.tlog\cl.command.1.tlog 9 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\audprog.tlog\cl.read.1.tlog 10 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\audprog.tlog\cl.write.1.tlog 11 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\audprog.tlog\link.command.1.tlog 12 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\audprog.tlog\link.read.1.tlog 13 | d:\documents\dropbox\projects\pc\audprog\audprog\debug\audprog.tlog\link.write.1.tlog 14 | -------------------------------------------------------------------------------- /audprog/Debug/audprog.log: -------------------------------------------------------------------------------- 1 | Build started 08.10.2016 21:05:44. 2 | 1>Project "D:\Documents\Dropbox\Projects\PC\audprog\audprog\audprog.vcxproj" on node 2 (Rebuild target(s)). 3 | 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140') cannot be found. To build using the v140 build tools, please install v140 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Upgrade Solution...". 4 | 1>Done Building Project "D:\Documents\Dropbox\Projects\PC\audprog\audprog\audprog.vcxproj" (Rebuild target(s)) -- FAILED. 5 | 6 | Build FAILED. 7 | 8 | Time Elapsed 00:00:00.15 9 | -------------------------------------------------------------------------------- /audprog/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | CONSOLE APPLICATION : audprog Project Overview 3 | ======================================================================== 4 | 5 | AppWizard has created this audprog application for you. 6 | 7 | This file contains a summary of what you will find in each of the files that 8 | make up your audprog application. 9 | 10 | 11 | audprog.vcxproj 12 | This is the main project file for VC++ projects generated using an Application Wizard. 13 | It contains information about the version of Visual C++ that generated the file, and 14 | information about the platforms, configurations, and project features selected with the 15 | Application Wizard. 16 | 17 | audprog.vcxproj.filters 18 | This is the filters file for VC++ projects generated using an Application Wizard. 19 | It contains information about the association between the files in your project 20 | and the filters. This association is used in the IDE to show grouping of files with 21 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the 22 | "Source Files" filter). 23 | 24 | audprog.cpp 25 | This is the main application source file. 26 | 27 | ///////////////////////////////////////////////////////////////////////////// 28 | Other standard files: 29 | 30 | StdAfx.h, StdAfx.cpp 31 | These files are used to build a precompiled header (PCH) file 32 | named audprog.pch and a precompiled types file named StdAfx.obj. 33 | 34 | ///////////////////////////////////////////////////////////////////////////// 35 | Other notes: 36 | 37 | AppWizard uses "TODO:" comments to indicate parts of the source code you 38 | should add to or customize. 39 | 40 | ///////////////////////////////////////////////////////////////////////////// 41 | -------------------------------------------------------------------------------- /audprog/Release/audprog.Build.CppClean.log: -------------------------------------------------------------------------------- 1 | d:\documents\dropbox\projects\pc\audprog\audprog\release\vc120.pdb 2 | d:\documents\dropbox\projects\pc\audprog\audprog\release\stdafx.obj 3 | d:\documents\dropbox\projects\pc\audprog\audprog\release\spi_ee.obj 4 | d:\documents\dropbox\projects\pc\audprog\audprog\release\aud.obj 5 | d:\documents\dropbox\projects\pc\audprog\audprog\release\audprog.obj 6 | d:\documents\dropbox\projects\pc\audprog\release\audprog.exe 7 | d:\documents\dropbox\projects\pc\audprog\release\audprog.pdb 8 | d:\documents\dropbox\projects\pc\audprog\audprog\release\audprog.tlog\cl.command.1.tlog 9 | d:\documents\dropbox\projects\pc\audprog\audprog\release\audprog.tlog\cl.read.1.tlog 10 | d:\documents\dropbox\projects\pc\audprog\audprog\release\audprog.tlog\cl.write.1.tlog 11 | d:\documents\dropbox\projects\pc\audprog\audprog\release\audprog.tlog\link.command.1.tlog 12 | d:\documents\dropbox\projects\pc\audprog\audprog\release\audprog.tlog\link.read.1.tlog 13 | d:\documents\dropbox\projects\pc\audprog\audprog\release\audprog.tlog\link.write.1.tlog 14 | -------------------------------------------------------------------------------- /audprog/Release/audprog.log: -------------------------------------------------------------------------------- 1 | Build started 17.10.2016 22:18:59. 2 | 1>Project "d:\Documents\Dropbox\Projects\PC\audprog\audprog\audprog.vcxproj" on node 2 (Clean target(s)). 3 | 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppClean.targets(76,5): warning : The process cannot access the file 'd:\documents\dropbox\projects\pc\audprog\audprog\release\audprog.obj' because it is being used by another process. 4 | 1>Done Building Project "d:\Documents\Dropbox\Projects\PC\audprog\audprog\audprog.vcxproj" (Clean target(s)). 5 | 6 | Build succeeded. 7 | 8 | Time Elapsed 00:00:00.08 9 | -------------------------------------------------------------------------------- /audprog/Release/audprog.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/audprog/Release/audprog.obj -------------------------------------------------------------------------------- /audprog/SPI_EE.cpp: -------------------------------------------------------------------------------- 1 | #include "SPI_EE.h" 2 | 3 | void serialize(unsigned char* data, unsigned char* rawData, const unsigned int dataSize) { 4 | for (unsigned int q = 0; q < dataSize; q++) { 5 | for (unsigned char i = 0; i < 8; i++) { 6 | if (*data & (1 << (7 - i))) { 7 | *rawData = MOSI; 8 | rawData++; 9 | *rawData = MOSI | CLK; 10 | rawData++; 11 | } 12 | else { 13 | *rawData = 0; 14 | rawData++; 15 | *rawData = CLK; 16 | rawData++; 17 | } 18 | } 19 | data++; 20 | } 21 | } 22 | 23 | void deserialize(unsigned char* rawData, unsigned char* data, unsigned int rawDataSize) { 24 | for (unsigned char q = 0; q < (rawDataSize / 16); q++) { 25 | *data = 0; 26 | for (unsigned char i = 0; i < 8; i++) { 27 | rawData++; 28 | if (*rawData & MISO) { 29 | *data |= 1 << (7 - i); 30 | }; 31 | rawData++; 32 | } 33 | data++; 34 | } 35 | } 36 | 37 | 38 | void writeEnable(FT_HANDLE ftDevice) { 39 | unsigned char header[] = { 0x06 }; 40 | DWORD b; 41 | struct { 42 | unsigned char csInit; 43 | unsigned char data[sizeof(header) * 16]; 44 | unsigned char csHigh; 45 | } rawData; 46 | 47 | rawData.csHigh = CS; 48 | rawData.csInit = CS; 49 | 50 | serialize(header, rawData.data, sizeof(header)); 51 | FT_Write(ftDevice, &rawData, sizeof(rawData), &b); 52 | FT_Read(ftDevice, &rawData, sizeof(rawData), &b); 53 | } 54 | 55 | void writeDisable(FT_HANDLE ftDevice) { 56 | unsigned char header[] = { 0x04 }; 57 | DWORD b; 58 | struct { 59 | unsigned char csInit; 60 | unsigned char data[sizeof(header) * 16]; 61 | unsigned char csHigh; 62 | } rawData; 63 | 64 | rawData.csHigh = CS; 65 | rawData.csInit = CS; 66 | 67 | serialize(header, rawData.data, sizeof(header)); 68 | FT_Write(ftDevice, &rawData, sizeof(rawData), &b); 69 | FT_Read(ftDevice, &rawData, sizeof(rawData), &b); 70 | } 71 | 72 | 73 | 74 | void devWriteByte(FT_HANDLE ftDevice, unsigned char wByte, unsigned short address) { 75 | unsigned char header[] = {0x06}; 76 | unsigned char packet[] = {0x02, (unsigned char)((address >> 8) & 0xFF), (unsigned char)(address & 0xFF), wByte }; 77 | DWORD b = 0; 78 | struct { 79 | unsigned char csInit; 80 | unsigned char header[sizeof(header) * 16]; 81 | unsigned char csHighMid; 82 | unsigned char data[sizeof(packet) * 16]; 83 | unsigned char csHigh; 84 | } rawData; 85 | 86 | rawData = { CS, {}, CS, {}, CS}; 87 | serialize(header, rawData.header, sizeof(header)); 88 | serialize(packet, rawData.data, sizeof(packet)); 89 | FT_Write(ftDevice, &rawData, sizeof(rawData), &b); 90 | FT_Read(ftDevice, &rawData, sizeof(rawData), &b); 91 | while (getStatus(ftDevice) & 1); 92 | } 93 | 94 | 95 | unsigned char devReadByte(FT_HANDLE ftDevice, unsigned short address) { 96 | unsigned char packet[] = { 0x03, (unsigned char)((address >> 8) & 0xFF), (unsigned char)(address & 0xFF), 0x00 }; 97 | DWORD b; 98 | struct { 99 | unsigned char csInit; 100 | unsigned char data[sizeof(packet) * 16]; 101 | unsigned char csHigh; 102 | } rawData; 103 | 104 | rawData.csInit = CS; 105 | rawData.csHigh = CS; 106 | 107 | serialize(packet, rawData.data, sizeof(packet)); 108 | FT_Write(ftDevice, &rawData, sizeof(rawData), &b); 109 | FT_Read(ftDevice, &rawData, sizeof(rawData), &b); 110 | deserialize(rawData.data, packet, sizeof(rawData)); 111 | return(packet[3]); 112 | } 113 | 114 | unsigned char getStatus(FT_HANDLE ftDevice) { 115 | unsigned char header[] = { 0x05 }; 116 | unsigned char data[] = { 0x00 }; 117 | DWORD b; 118 | struct { 119 | unsigned char csInit; 120 | unsigned char header[sizeof(header) * 16]; 121 | unsigned char data[(sizeof(data)) * 16]; 122 | unsigned char csHigh; 123 | } rawData; 124 | 125 | rawData = { CS, {}, {}, CS}; 126 | 127 | serialize(header, rawData.header, sizeof(header)); 128 | serialize(data, rawData.data, sizeof(data)); 129 | FT_Write(ftDevice, &rawData, sizeof(rawData), &b); 130 | FT_Read(ftDevice, &rawData, sizeof(rawData), &b); 131 | unsigned char status = 0; 132 | deserialize(rawData.data, &status, sizeof(rawData.data)); 133 | return status; 134 | } 135 | -------------------------------------------------------------------------------- /audprog/SPI_EE.h: -------------------------------------------------------------------------------- 1 | #ifndef __SPI_EE_H_ 2 | #define __SPI_EE_H_ 3 | 4 | #include "stdafx.h" 5 | #include "ftd2xx.h" 6 | 7 | // pin definition 8 | // NEW HW 9 | 10 | #define CS ((unsigned char)((1<<4)|(1<<6))) 11 | #define CLK ((unsigned char)(1<<6)) 12 | #define MOSI ((unsigned char)(1<<3)) 13 | #define MISO ((unsigned char)(1<<0)) 14 | 15 | 16 | // OLD HW 17 | /* 18 | #define CS ((unsigned char)((1<<3)|(1<<0))) 19 | #define CLK (1<<0) 20 | #define MOSI (1<<2) 21 | #define MISO (1<<1) 22 | */ 23 | 24 | 25 | //EEPROM routines prototypes 26 | unsigned char getStatus(FT_HANDLE ftDevice); 27 | void writeEnable(FT_HANDLE ftDevice); 28 | void writeDisable(FT_HANDLE ftDevice); 29 | void devWriteByte(FT_HANDLE ftDevice, unsigned char wByte, unsigned short address); 30 | unsigned char devReadByte(FT_HANDLE ftDevice, unsigned short address); 31 | 32 | #endif -------------------------------------------------------------------------------- /audprog/audprog.cbp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | -------------------------------------------------------------------------------- /audprog/audprog.cbp.save-failed: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 78 | 79 | -------------------------------------------------------------------------------- /audprog/audprog.cpp: -------------------------------------------------------------------------------- 1 | #include "audprog.h" 2 | 3 | #define exit() printf_s("\nPress any key...");\ 4 | getchar();\ 5 | return 0\ 6 | 7 | void printHelp() { 8 | const wchar_t* help = L"AUD Programmimg utility v0.1. Please report errors to shuher@list.ru\nUsage:\n\ 9 | audprog.exe -d -i -m -a -o -s -l -f \n\ 10 | - number of FTDI device (useful for multichannel devices like FT2232)\n\ 11 | <--list> - use \"audprog.exe --list\" to query the list of FTDI devices attached to the system to determine the correct one for usage\n\ 12 | - \"AUD\" or \"EE\"\n\ 13 | - \"byte\", \"word\" or \"longword\"\n\ 14 | - \"read\", \"write\", \"print\", \"dump\" or \"monitor\"\n\ 15 | - to start from, decimal or hexadecimal\n\ 16 | - ROM size for AUD dumping - \"512\" or \"1024\", EEPROM size for EEPROM dumping (in kBytes) - \"1\" or \"4\" for 93cxx ICs, \"32\" or \"64\" for 95xxx ICs\n\ 17 | - data size to be read from AUD (in bytes, words or longwords depending on AUD mode)\n\ 18 | - file to save/dump to or to read from"; 19 | 20 | wprintf(help); 21 | } 22 | 23 | unsigned long le2be(unsigned long leData) 24 | { 25 | return ((leData & 0xFF00FF00) >> 8) | ((leData & 0x00FF00FF) << 8); 26 | } 27 | 28 | unsigned long lw2bw(unsigned long leData) 29 | { 30 | return ((leData & 0xFFFF0000) >> 16) | ((leData & 0x0000FFFF) << 16); 31 | } 32 | 33 | HANDLE CreateStorage(wchar_t* filename) { 34 | HANDLE hStorage = CreateFile(filename, 35 | GENERIC_READ | GENERIC_WRITE, 36 | 0, 37 | NULL, // no security attributes 38 | CREATE_ALWAYS, 39 | 0, // not overlapped I/O 40 | NULL // hTemplate must be NULL for comm devices 41 | ); 42 | if (hStorage == INVALID_HANDLE_VALUE) { 43 | // Handle the error. 44 | wprintf(L"CreateFile %s failed with error %d.\n", filename, GetLastError()); 45 | return (INVALID_HANDLE_VALUE); 46 | } 47 | return hStorage; 48 | } 49 | 50 | HANDLE OpenStorage(wchar_t* filename) { 51 | HANDLE hStorage = CreateFile(filename, 52 | GENERIC_READ, 53 | 0, 54 | NULL, // no security attributes 55 | OPEN_EXISTING, 56 | 0, // not overlapped I/O 57 | NULL // hTemplate must be NULL for comm devices 58 | ); 59 | if (hStorage == INVALID_HANDLE_VALUE) { 60 | // Handle the error. 61 | wprintf(L"Open file %s failed with error %d.\n", filename, GetLastError()); 62 | return (INVALID_HANDLE_VALUE); 63 | } 64 | return hStorage; 65 | } 66 | 67 | void FT_PrintDeviceList() { 68 | FT_DEVICE_LIST_INFO_NODE *devInfo; 69 | unsigned long numDevs; 70 | FT_CreateDeviceInfoList(&numDevs); 71 | 72 | if (numDevs > 0) { 73 | devInfo = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs); 74 | 75 | if (FT_GetDeviceInfoList(devInfo, &numDevs) == FT_OK) { 76 | for (unsigned int i = 0; i < numDevs; i++) { 77 | printf_s("Device %d: \"%s\"\n", i, devInfo[i].Description); 78 | } 79 | } 80 | } else { 81 | wprintf_s(L"No FTDI deivces found\n"); 82 | } 83 | } 84 | 85 | FT_HANDLE FTDI_Init(unsigned int devNum) { 86 | FT_HANDLE ftDevice; 87 | unsigned long numDevs = 0; 88 | 89 | if (FT_CreateDeviceInfoList(&numDevs) != FT_OK) { 90 | printf("No FTDI devices found\n"); 91 | return NULL; 92 | } 93 | 94 | if (devNum > numDevs) { 95 | printf("Incorrect deivice number specified\n"); 96 | return NULL; 97 | } 98 | 99 | FT_DEVICE_LIST_INFO_NODE *devInfo = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs); 100 | FT_GetDeviceInfoList(devInfo, &numDevs); 101 | FT_OpenEx(devInfo[devNum].Description, FT_OPEN_BY_DESCRIPTION, &ftDevice); 102 | 103 | FT_ResetDevice(ftDevice); 104 | 105 | if (FT_SetBaudRate(ftDevice, 460800) != FT_OK) 106 | { 107 | printf("Baudraet set error\n"); 108 | return NULL; 109 | } 110 | 111 | if (FT_SetLatencyTimer(ftDevice, 1) != FT_OK) { 112 | printf("Latency set error\n"); 113 | return NULL; 114 | } 115 | 116 | if (FT_SetUSBParameters(ftDevice, 128, 128) != FT_OK) { 117 | printf("USB transfer size error\n"); 118 | return NULL; 119 | } 120 | 121 | return ftDevice; 122 | } 123 | 124 | int getopts(PARAMS *params, int argc, wchar_t* argv[]){ 125 | 126 | for (int q = 1; q < argc - 1; q++) { 127 | 128 | // getting filename 129 | if (wcscmp(argv[q], L"-f") == 0) { 130 | if (wcsstr(argv[q + 1], L"-") != argv[q + 1]) { // filename starting from "-" is probably a result of ommiting filename itself 131 | params->fileName = (wchar_t*)(argv[q + 1]); 132 | } 133 | else { 134 | wprintf_s(L"Filename seems to be omitted \"%s\"\nPlease enter filename not starting from \"-\" symbol\n", argv[q + 1]); 135 | return 1; 136 | } 137 | } 138 | 139 | // getting FTDI device number 140 | if (wcscmp(argv[q], L"-d") == 0) { 141 | if (swscanf_s(argv[q + 1], L"%i", ¶ms->ftDeviceNum) != 1) { 142 | wprintf_s(L"Incorrect device numder - \"%s\" Using default value %d\n", argv[q + 1], params->ftDeviceNum); 143 | } 144 | } 145 | 146 | // choosing EEPROM or AUD 147 | if (wcscmp(argv[q], L"-i") == 0) { 148 | if (wcscmp(argv[q + 1], L"AUD") == 0) { 149 | params->iface = AUD; 150 | } 151 | if (wcscmp(argv[q + 1], L"EE") == 0) params->iface = EEPROM; 152 | if (params->iface == DEVICE_IFACE_NONE) { 153 | wprintf_s(L"Incorrect interface type specified - \"%s\"\n", argv[q + 1]); 154 | return 1; 155 | } 156 | } 157 | 158 | // choosing AUD mode 159 | if (wcscmp(argv[q], L"-m") == 0) { 160 | if (wcscmp(argv[q + 1], L"byte") == 0) params->mode = AUD_BYTE; 161 | if (wcscmp(argv[q + 1], L"word") == 0) params->mode = AUD_WORD; 162 | if (wcscmp(argv[q + 1], L"longword") == 0) params->mode = AUD_LONGWORD; 163 | if ((params->mode == AUD_LONGWORD) && (wcscmp(argv[q + 1], L"longword") != 0)) { 164 | wprintf_s(L"Incorrect AUD mode specified - \"%s\" Using default mode - \"LONGWORD\"\n", argv[q + 1]); 165 | } 166 | } 167 | 168 | // setting action 169 | if (wcscmp(argv[q], L"-a") == 0) { 170 | if (wcscmp(argv[q + 1], L"read") == 0) params->action = READ; 171 | if (wcscmp(argv[q + 1], L"write") == 0) params->action = WRITE; 172 | if (wcscmp(argv[q + 1], L"dump") == 0) params->action = DUMP; 173 | if (wcscmp(argv[q + 1], L"print") == 0) params->action = PRINT; 174 | if (wcscmp(argv[q + 1], L"monitor") == 0) params->action = MONITOR; 175 | if (params->action == DEVICE_ACTION_NONE) { 176 | wprintf_s(L"Incorrect action specified - \"%s\"\n", argv[q + 1]); 177 | return 1; 178 | } 179 | } 180 | 181 | // getting offset 182 | if (wcscmp(argv[q], L"-o") == 0) { 183 | if (swscanf_s(argv[q + 1], L"%i", ¶ms->offset) != 1) { 184 | wprintf_s(L"Incorrect offset specified - \"%s\" Using default value %d\n", argv[q + 1], params->offset); 185 | } 186 | } 187 | 188 | // getting lenght 189 | if (wcscmp(argv[q], L"-l") == 0) { 190 | if (swscanf_s(argv[q + 1], L"%i", ¶ms->len) != 1) { 191 | wprintf_s(L"Incorrect lenght specified - \"%s\" Using default value %d\n", argv[q + 1], params->len); 192 | } 193 | } 194 | 195 | // choosing ROM size for dumping 196 | if (wcscmp(argv[q], L"-s") == 0) { 197 | if (wcscmp(argv[q + 1], L"512") == 0) params->romSize = ROM_512; 198 | if (wcscmp(argv[q + 1], L"1024") == 0) params->romSize = ROM_1024; 199 | if (wcscmp(argv[q + 1], L"32") == 0) params->romSize = EE_32; 200 | if (wcscmp(argv[q + 1], L"64") == 0) params->romSize = EE_64; 201 | if ((params->romSize == ROM_512) && (wcscmp(argv[q + 1], L"512") != 0)) { 202 | wprintf_s(L"Incorrect ROM size specified - \"%s\" Using default size - \"512\"\n", argv[q + 1]); 203 | } 204 | } 205 | 206 | } 207 | 208 | params->ftDevice = FTDI_Init(params->ftDeviceNum); 209 | return 0; 210 | } 211 | 212 | 213 | int AUD_uploadFile(PARAMS* params) { 214 | HANDLE iFile = OpenStorage(params->fileName); 215 | params->len = GetFileSize(iFile, NULL); 216 | unsigned long b; 217 | unsigned long a = params->offset; 218 | unsigned char bData; 219 | unsigned short wData; 220 | unsigned long lData; 221 | 222 | if (params->mode == AUD_WORD) a = (a / 2) * 2; // to avoid unaligned access 4n+1 or 4n+3 223 | if (params->mode == AUD_LONGWORD) a = (a / 4) * 4; // to avoid unaligned access 4n+1, 4n+2 or 4n+3 224 | printf("\nUploading from offset 0x%06x\n", a); 225 | AUD_SHSetRAMmode(params->ftDevice); 226 | 227 | while (a < params->offset + params->len) { 228 | switch (params->mode) { 229 | case AUD_BYTE: 230 | ReadFile(iFile, &bData, sizeof(bData), &b, NULL); 231 | AUD_writeByte(params->ftDevice, a, bData); 232 | a++; 233 | printf("%2d%%\r", (100 * (a - params->offset) / (params->len))); 234 | break; 235 | case AUD_WORD: 236 | ReadFile(iFile, &wData, sizeof(wData), &b, NULL); 237 | AUD_writeWord(params->ftDevice, a, wData); 238 | a += 2; 239 | printf("%2d%%\r", (100 * (a - params->offset) / (params->len))); 240 | break; 241 | case AUD_LONGWORD: 242 | ReadFile(iFile, &lData, sizeof(lData), &b, NULL); 243 | AUD_writeLWord(params->ftDevice, a, lData); 244 | a += 4; 245 | printf("%2d%%\r", (100 * (a - params->offset) / (params->len))); 246 | break; 247 | } 248 | } 249 | CloseHandle(iFile); 250 | printf_s("%d bytes written\n", params->len); 251 | return 0; 252 | } 253 | 254 | int AUD_readToFile(PARAMS* params) { 255 | HANDLE oFile = CreateStorage(params->fileName); 256 | unsigned long b; 257 | unsigned long a = params->offset; 258 | unsigned char bData; 259 | unsigned short wData; 260 | unsigned long lData; 261 | 262 | if (params->mode == AUD_WORD) { 263 | a = (a / 2) * 2; // to avoid unaligned access 4n+1 or 4n+3 264 | params->len *= 2; 265 | } 266 | if (params->mode == AUD_LONGWORD) { 267 | a = (a / 4) * 4; // to avoid unaligned access 4n+1, 4n+2 or 4n+3 268 | params->len *= 4; 269 | } 270 | printf("\nReading from offset 0x%06x\n", a); 271 | 272 | AUD_SHSetRAMmode(params->ftDevice); 273 | 274 | while (a < params->offset + params->len) { 275 | switch (params->mode) { 276 | case AUD_BYTE: 277 | bData = AUD_readByte(params->ftDevice, a); 278 | WriteFile(oFile, &bData, sizeof(bData), &b, NULL); 279 | a++; 280 | printf("%2d%%\r", (100 * (a - params->offset) / (params->len))); 281 | break; 282 | case AUD_WORD: 283 | wData = AUD_readWord(params->ftDevice, a); 284 | WriteFile(oFile, &wData, sizeof(wData), &b, NULL); 285 | a += 2; 286 | printf("%2d%%\r", (100 * (a - params->offset) / (params->len))); 287 | break; 288 | case AUD_LONGWORD: 289 | lData = AUD_readLWord(params->ftDevice, a); 290 | WriteFile(oFile, &lData, sizeof(lData), &b, NULL); 291 | a += 4; 292 | printf("%2d%%\r", (100 * (a - params->offset) / (params->len))); 293 | break; 294 | } 295 | } 296 | CloseHandle(oFile); 297 | return 0; 298 | } 299 | 300 | int AUD_readToScreen(PARAMS* params) { 301 | 302 | unsigned long pData; 303 | 304 | if (params->mode == AUD_WORD) params->offset = (params->offset / 2) * 2; // to avoid unaligned access 4n+1 or 4n+3 305 | if (params->mode == AUD_LONGWORD) params->offset = (params->offset / 4) * 4; // to avoid unaligned access 4n+1, 4n+2 or 4n+3 306 | unsigned long a = params->offset; 307 | 308 | printf_s("\n"); 309 | 310 | AUD_SHSetRAMmode(params->ftDevice); 311 | 312 | while (a < params->offset + params->len) { 313 | switch (params->mode) { 314 | case AUD_BYTE: 315 | pData = le2be(AUD_readByte(params->ftDevice, a)); 316 | if ((a - params->offset) % 0x10 == 0) printf_s("\n0x%06x ", a); 317 | printf_s("%02x ", pData); 318 | a++; 319 | break; 320 | case AUD_WORD: 321 | pData = le2be(AUD_readWord(params->ftDevice, a)); 322 | if ((a - params->offset) % 0x10 == 0) printf_s("\n0x%06x ", a); 323 | printf_s("%04x ", pData); 324 | a += 2; 325 | break; 326 | case AUD_LONGWORD: 327 | pData = lw2bw(le2be(AUD_readLWord(params->ftDevice, a))); 328 | if ((a - params->offset) % 0x010 == 0) printf_s("\n0x%06x ", a); 329 | printf_s("%08x ", pData); 330 | a += 4; 331 | break; 332 | } 333 | } 334 | return 0; 335 | } 336 | 337 | int AUD_monitor(PARAMS* params) { 338 | 339 | unsigned long lData; 340 | 341 | params->offset = (params->offset / 4) * 4; // to avoid unaligned access 4n+1, 4n+2 or 4n+3 342 | unsigned long a = params->offset; 343 | 344 | AUD_SHSetRAMmode(params->ftDevice); 345 | while (1) { 346 | lData = lw2bw(le2be(AUD_readLWord(params->ftDevice, a))); 347 | printf_s("\r0x%06x ", a); 348 | printf_s("%08x ", lData); 349 | } 350 | return 0; 351 | } 352 | 353 | 354 | int AUD_dumpToFile(PARAMS* params) { 355 | unsigned long a = 0; 356 | int speed = 0, total = 0, elapsed = 0, left = 0; 357 | unsigned long b; 358 | unsigned long long oTick = GetTickCount64(); 359 | unsigned long long iTick = GetTickCount64(); 360 | unsigned long size = 0x80000; 361 | 362 | if (params->romSize == ROM_1024) size *= 2; 363 | printf("\nDumping %d bytes\n", size); 364 | 365 | AUD_SHSetRAMmode(params->ftDevice); 366 | 367 | HANDLE oFile = CreateStorage(params->fileName); 368 | while (a < size) { 369 | unsigned long d = (AUD_readLWord(params->ftDevice, a)); 370 | WriteFile(oFile, &d, sizeof(d), &b, NULL); 371 | a += 4; 372 | if (a % 0x400 == 0) { 373 | unsigned long long cTick = GetTickCount64(); 374 | speed = (int)(0x400 * 1000 / (cTick - oTick)); 375 | 376 | total = (int)(size / speed) / 60; 377 | elapsed = (int)((cTick - iTick) / 1000) / 60; 378 | left = total - elapsed; 379 | oTick = cTick; 380 | } 381 | wprintf(L"Reading... 0x0%06x %02d%% %d bps ", a, (a * 100 / size), speed); 382 | wprintf(L"%d min elapsed, %d min left.\r", elapsed, left); 383 | } 384 | CloseHandle(oFile); 385 | return 0; 386 | } 387 | 388 | //EEPROM 389 | int EE_readToFile(PARAMS* params) { 390 | if (!((params->romSize == EE_32) || (params->romSize == EE_64))) { 391 | wprintf(L"\nERROR - incorrect EEPROM size\n"); 392 | return 1; 393 | }; 394 | 395 | HANDLE oFile = CreateStorage(params->fileName); 396 | DWORD b; 397 | unsigned int a = 0; 398 | 399 | printf("\nReading\n"); 400 | 401 | if (FT_SetBitMode(params->ftDevice, MOSI | CS | CLK, FT_BITMODE_SYNC_BITBANG) != FT_OK) { 402 | printf("Error setting bit bang mode\n"); 403 | return 1; 404 | } 405 | 406 | unsigned long size = 0xFFF; 407 | if (params->romSize == EE_64) size = 0x1FFF; 408 | 409 | for (a = 0; a <= size; a++) { 410 | unsigned char data = devReadByte(params->ftDevice, a); 411 | WriteFile(oFile, &data, sizeof(data), &b, NULL); 412 | printf(" \r%02d%%", ((100 * a) / size)); 413 | } 414 | printf("\r100%%\n%d bytes saved\n", a); 415 | CloseHandle(oFile); 416 | return 0; 417 | } 418 | 419 | int EE_writeFile(PARAMS* params) { 420 | DWORD b; 421 | unsigned int a = 0; 422 | HANDLE iFile = OpenStorage(params->fileName); 423 | unsigned int len = GetFileSize(iFile, NULL); 424 | unsigned char data = 0; 425 | 426 | printf("\nWriting...\n"); 427 | 428 | if (FT_SetBitMode(params->ftDevice, MOSI | CS | CLK, FT_BITMODE_SYNC_BITBANG) != FT_OK) { 429 | printf("Error setting bit bang mode\n"); 430 | return 1; 431 | } 432 | 433 | for (a = 0; a < len; a++) { 434 | ReadFile(iFile, &data, sizeof(data), &b, NULL); 435 | devWriteByte(params->ftDevice, data, a); 436 | printf(" \r%02d%%", ((100 * a) / len)); 437 | } 438 | 439 | writeDisable(params->ftDevice); 440 | printf("\r100%%\n%d bytes written.\n", a); 441 | CloseHandle(iFile); 442 | return 0; 443 | } 444 | 445 | int _tmain(int argc, _TCHAR* argv[]) { 446 | // audprog.exe -d -i -m -a -o -l -s -f 447 | 448 | PARAMS params; 449 | unsigned long num = 0; 450 | FT_CreateDeviceInfoList(&num); 451 | 452 | if (argc == 1) { 453 | printHelp(); 454 | return 0; 455 | } 456 | 457 | //printing FTDI device list 458 | if ((wcscmp(argv[1], L"--list") == 0) && argc == 2) { 459 | FT_PrintDeviceList(); 460 | return 0; 461 | } 462 | else { 463 | if (num > 1) wprintf_s(L"There are %d FTDI devices found, please ensure that the correct one is used. Use \"audprog.exe --list\" to query available devices.\n", num); 464 | } 465 | 466 | if (getopts(¶ms, argc, argv) != 0) return 1; // parameters were exctracted OK, let's decide what to do next 467 | 468 | if (params.iface == AUD) { 469 | switch (params.action) { 470 | case READ: 471 | AUD_readToFile(¶ms); break; 472 | case WRITE: 473 | AUD_uploadFile(¶ms); break; 474 | case PRINT: 475 | AUD_readToScreen(¶ms); break; 476 | case DUMP: 477 | AUD_dumpToFile(¶ms); break; 478 | case MONITOR: 479 | AUD_monitor(¶ms); break; 480 | } 481 | return 0; 482 | } 483 | 484 | if (params.iface == EEPROM) { 485 | switch (params.action) { 486 | case READ: 487 | if (params.romSize == ROM_512 || params.romSize == ROM_1024) { 488 | params.romSize = EE_32; // stupid way to process EE_SIZE options in the same way as ROM_SIZE 489 | wprintf_s(L"Incorrect EEPROM size specified (use \"-s 32\" or \"-s 64\" option for this), defaulting to 32kb EEPROM size\n"); 490 | } 491 | EE_readToFile(¶ms); 492 | break; 493 | case WRITE: EE_writeFile(¶ms); break; 494 | default: wprintf_s(L"Requested action cannot be performed for EEPROM\n"); 495 | } 496 | return 0; 497 | } 498 | printHelp(); 499 | return 1; 500 | } -------------------------------------------------------------------------------- /audprog/audprog.h: -------------------------------------------------------------------------------- 1 | #ifndef __AUDPROG_H_ 2 | #define __AUDPROG_H_ 3 | 4 | #include "stdafx.h" 5 | #include "ftd2xx.h" 6 | #include "AUD.h" 7 | #include "SPI_EE.h" 8 | 9 | enum DEVICE_IFACE {AUD, EEPROM, DEVICE_IFACE_NONE}; 10 | enum AUD_MODE {AUD_BYTE, AUD_WORD, AUD_LONGWORD}; 11 | enum DEVICE_ACTION {READ, WRITE, PRINT, DUMP, MONITOR, DEVICE_ACTION_NONE}; 12 | enum ROM_SIZE {ROM_512, ROM_1024, EE_32, EE_64}; 13 | 14 | struct PARAMS { 15 | int ftDeviceNum = 0; 16 | FT_HANDLE ftDevice = NULL; 17 | unsigned long offset = 0; 18 | unsigned long len = 1; 19 | wchar_t * fileName = NULL; 20 | DEVICE_IFACE iface = DEVICE_IFACE_NONE; 21 | DEVICE_ACTION action = DEVICE_ACTION_NONE; 22 | AUD_MODE mode = AUD_LONGWORD; 23 | ROM_SIZE romSize = ROM_512; 24 | }; 25 | 26 | //main functions prototypes 27 | // AUD 28 | int AUD_uploadFile(PARAMS* params); 29 | int AUD_readToFile(PARAMS* params); 30 | int AUD_readToScreen(PARAMS* params); 31 | int AUD_dumpToFile(PARAMS* params); 32 | 33 | //EEPROM 34 | int EE_readToFile(PARAMS* params); 35 | int EE_writeFile(PARAMS* params); 36 | 37 | #endif -------------------------------------------------------------------------------- /audprog/audprog.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /audprog/audprog.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {79CE91B5-8758-40B7-A7BB-563B870FFD47} 15 | Win32Proj 16 | audprog 17 | 18 | 19 | 20 | Application 21 | true 22 | v120 23 | Unicode 24 | true 25 | 26 | 27 | Application 28 | false 29 | v120 30 | true 31 | Unicode 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | true 45 | 46 | 47 | false 48 | 49 | 50 | 51 | 52 | 53 | Level3 54 | Disabled 55 | WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 56 | true 57 | true 58 | StreamingSIMDExtensions2 59 | None 60 | false 61 | Default 62 | 63 | 64 | Console 65 | true 66 | ftd2xx.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) 67 | 68 | 69 | 70 | 71 | Level3 72 | 73 | 74 | MaxSpeed 75 | true 76 | true 77 | WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 78 | true 79 | StreamingSIMDExtensions2 80 | Default 81 | 82 | 83 | Console 84 | true 85 | true 86 | true 87 | ftd2xx.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /audprog/audprog.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | Header Files 29 | 30 | 31 | Header Files 32 | 33 | 34 | Header Files 35 | 36 | 37 | Header Files 38 | 39 | 40 | 41 | 42 | Source Files 43 | 44 | 45 | Source Files 46 | 47 | 48 | Source Files 49 | 50 | 51 | Source Files 52 | 53 | 54 | -------------------------------------------------------------------------------- /audprog/audprog.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /audprog/ftd2xx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/audprog/ftd2xx.h -------------------------------------------------------------------------------- /audprog/ftd2xx.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/audprog/ftd2xx.lib -------------------------------------------------------------------------------- /audprog/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // audprog.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /audprog/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #include "targetver.h" 9 | 10 | #include 11 | #include 12 | 13 | 14 | 15 | // TODO: reference additional headers your program requires here 16 | -------------------------------------------------------------------------------- /audprog/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /hw/audprog_v2-F.Cu.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/hw/audprog_v2-F.Cu.pdf -------------------------------------------------------------------------------- /hw/audprog_v2-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 2 | #encoding utf-8 3 | # 4 | # +3V3 5 | # 6 | DEF +3V3 #PWR 0 0 Y Y 1 F P 7 | F0 "#PWR" 0 -150 50 H I C CNN 8 | F1 "+3V3" 0 140 50 H V C CNN 9 | F2 "" 0 0 50 H V C CNN 10 | F3 "" 0 0 50 H V C CNN 11 | ALIAS +3.3V 12 | DRAW 13 | P 2 0 1 0 -30 50 0 100 N 14 | P 2 0 1 0 0 0 0 100 N 15 | P 2 0 1 0 0 100 30 50 N 16 | X +3V3 1 0 0 0 U 50 50 1 1 W N 17 | ENDDRAW 18 | ENDDEF 19 | # 20 | # +5V 21 | # 22 | DEF +5V #PWR 0 0 Y Y 1 F P 23 | F0 "#PWR" 0 -150 50 H I C CNN 24 | F1 "+5V" 0 140 50 H V C CNN 25 | F2 "" 0 0 50 H V C CNN 26 | F3 "" 0 0 50 H V C CNN 27 | DRAW 28 | P 2 0 1 0 -30 50 0 100 N 29 | P 2 0 1 0 0 0 0 100 N 30 | P 2 0 1 0 0 100 30 50 N 31 | X +5V 1 0 0 0 U 50 50 1 1 W N 32 | ENDDRAW 33 | ENDDEF 34 | # 35 | # AP1117 36 | # 37 | DEF AP1117 U 0 30 Y Y 1 F N 38 | F0 "U" 100 -250 50 H V C CNN 39 | F1 "AP1117" 0 250 50 H V C CNN 40 | F2 "" 0 0 50 H V C CNN 41 | F3 "" 0 0 50 H V C CNN 42 | ALIAS AP1117D15 AP1117D18 AP1117D25 AP1117D33 AP1117D50 AP1117E15 AP1117E18 AP1117E25 AP1117E33 AP1117E50 AP1117K15 AP1117K18 AP1117K25 AP1117K33 AP1117K50 AP1117T15 AP1117T18 AP1117T25 AP1117T33 AP1117T50 AP1117Y15 AP1117Y18 AP1117Y25 AP1117Y33 AP1117Y50 43 | $FPLIST 44 | SOT223 45 | SOT89-3 46 | TO220-3 47 | TO252 48 | TO263 49 | $ENDFPLIST 50 | DRAW 51 | S -200 -200 200 200 0 1 10 f 52 | X GND/ADJ 1 0 -300 100 U 50 50 1 1 W 53 | X VO 2 300 0 100 L 50 50 1 1 w 54 | X VI 3 -300 0 100 R 50 50 1 1 W 55 | ENDDRAW 56 | ENDDEF 57 | # 58 | # BC817-40 59 | # 60 | DEF BC817-40 Q 0 0 Y Y 1 F N 61 | F0 "Q" 200 75 50 H V L CNN 62 | F1 "BC817-40" 200 0 50 H V L CNN 63 | F2 "SOT-23" 200 -75 50 H V L CIN 64 | F3 "" 0 0 50 H V L CNN 65 | ALIAS BC818-40 66 | $FPLIST 67 | SOT-23* 68 | $ENDFPLIST 69 | DRAW 70 | C 50 0 111 0 1 10 N 71 | P 2 0 1 0 0 0 25 0 N 72 | P 2 0 1 0 100 100 25 25 N 73 | P 3 0 1 0 25 -25 100 -100 100 -100 N 74 | P 3 0 1 20 25 75 25 -75 25 -75 N 75 | P 5 0 1 0 50 -70 70 -50 90 -90 50 -70 50 -70 F 76 | X B 1 -200 0 200 R 50 50 1 1 I 77 | X E 2 100 -200 100 U 50 50 1 1 P 78 | X C 3 100 200 100 D 50 50 1 1 P 79 | ENDDRAW 80 | ENDDEF 81 | # 82 | # CONN_01X05 83 | # 84 | DEF CONN_01X05 P 0 40 Y N 1 F N 85 | F0 "P" 0 300 50 H V C CNN 86 | F1 "CONN_01X05" 100 0 50 V V C CNN 87 | F2 "" 0 0 50 H V C CNN 88 | F3 "" 0 0 50 H V C CNN 89 | $FPLIST 90 | Pin_Header_Straight_1X05 91 | Pin_Header_Angled_1X05 92 | Socket_Strip_Straight_1X05 93 | Socket_Strip_Angled_1X05 94 | $ENDFPLIST 95 | DRAW 96 | S -50 -195 10 -205 0 1 0 N 97 | S -50 -95 10 -105 0 1 0 N 98 | S -50 5 10 -5 0 1 0 N 99 | S -50 105 10 95 0 1 0 N 100 | S -50 205 10 195 0 1 0 N 101 | S -50 250 50 -250 0 1 0 N 102 | X P1 1 -200 200 150 R 50 50 1 1 P 103 | X P2 2 -200 100 150 R 50 50 1 1 P 104 | X P3 3 -200 0 150 R 50 50 1 1 P 105 | X P4 4 -200 -100 150 R 50 50 1 1 P 106 | X P5 5 -200 -200 150 R 50 50 1 1 P 107 | ENDDRAW 108 | ENDDEF 109 | # 110 | # CONN_02X04 111 | # 112 | DEF CONN_02X04 P 0 1 Y N 1 F N 113 | F0 "P" 0 250 50 H V C CNN 114 | F1 "CONN_02X04" 0 -250 50 H V C CNN 115 | F2 "" 0 -1200 50 H V C CNN 116 | F3 "" 0 -1200 50 H V C CNN 117 | $FPLIST 118 | Pin_Header_Straight_2X04 119 | Pin_Header_Angled_2X04 120 | Socket_Strip_Straight_2X04 121 | Socket_Strip_Angled_2X04 122 | $ENDFPLIST 123 | DRAW 124 | S -100 -145 -50 -155 0 1 0 N 125 | S -100 -45 -50 -55 0 1 0 N 126 | S -100 55 -50 45 0 1 0 N 127 | S -100 155 -50 145 0 1 0 N 128 | S -100 200 100 -200 0 1 0 N 129 | S 50 -145 100 -155 0 1 0 N 130 | S 50 -45 100 -55 0 1 0 N 131 | S 50 55 100 45 0 1 0 N 132 | S 50 155 100 145 0 1 0 N 133 | X P1 1 -250 150 150 R 50 50 1 1 P 134 | X P2 2 250 150 150 L 50 50 1 1 P 135 | X P3 3 -250 50 150 R 50 50 1 1 P 136 | X P4 4 250 50 150 L 50 50 1 1 P 137 | X P5 5 -250 -50 150 R 50 50 1 1 P 138 | X P6 6 250 -50 150 L 50 50 1 1 P 139 | X P7 7 -250 -150 150 R 50 50 1 1 P 140 | X P8 8 250 -150 150 L 50 50 1 1 P 141 | ENDDRAW 142 | ENDDEF 143 | # 144 | # CONN_02X08 145 | # 146 | DEF CONN_02X08 P 0 1 Y N 1 F N 147 | F0 "P" 0 450 50 H V C CNN 148 | F1 "CONN_02X08" 0 0 50 V V C CNN 149 | F2 "" 0 -1200 50 H V C CNN 150 | F3 "" 0 -1200 50 H V C CNN 151 | $FPLIST 152 | Pin_Header_Straight_2X08 153 | Pin_Header_Angled_2X08 154 | Socket_Strip_Straight_2X08 155 | Socket_Strip_Angled_2X08 156 | $ENDFPLIST 157 | DRAW 158 | S -100 -345 -50 -355 0 1 0 N 159 | S -100 -245 -50 -255 0 1 0 N 160 | S -100 -145 -50 -155 0 1 0 N 161 | S -100 -45 -50 -55 0 1 0 N 162 | S -100 55 -50 45 0 1 0 N 163 | S -100 155 -50 145 0 1 0 N 164 | S -100 255 -50 245 0 1 0 N 165 | S -100 355 -50 345 0 1 0 N 166 | S -100 400 100 -400 0 1 0 N 167 | S 50 -345 100 -355 0 1 0 N 168 | S 50 -245 100 -255 0 1 0 N 169 | S 50 -145 100 -155 0 1 0 N 170 | S 50 -45 100 -55 0 1 0 N 171 | S 50 55 100 45 0 1 0 N 172 | S 50 155 100 145 0 1 0 N 173 | S 50 255 100 245 0 1 0 N 174 | S 50 355 100 345 0 1 0 N 175 | X P1 1 -250 350 150 R 50 50 1 1 P 176 | X P2 2 250 350 150 L 50 50 1 1 P 177 | X P3 3 -250 250 150 R 50 50 1 1 P 178 | X P4 4 250 250 150 L 50 50 1 1 P 179 | X P5 5 -250 150 150 R 50 50 1 1 P 180 | X P6 6 250 150 150 L 50 50 1 1 P 181 | X P7 7 -250 50 150 R 50 50 1 1 P 182 | X P8 8 250 50 150 L 50 50 1 1 P 183 | X P9 9 -250 -50 150 R 50 50 1 1 P 184 | X P10 10 250 -50 150 L 50 50 1 1 P 185 | X P11 11 -250 -150 150 R 50 50 1 1 P 186 | X P12 12 250 -150 150 L 50 50 1 1 P 187 | X P13 13 -250 -250 150 R 50 50 1 1 P 188 | X P14 14 250 -250 150 L 50 50 1 1 P 189 | X P15 15 -250 -350 150 R 50 50 1 1 P 190 | X P16 16 250 -350 150 L 50 50 1 1 P 191 | ENDDRAW 192 | ENDDEF 193 | # 194 | # C_Small 195 | # 196 | DEF C_Small C 0 10 N N 1 F N 197 | F0 "C" 10 70 50 H V L CNN 198 | F1 "C_Small" 10 -80 50 H V L CNN 199 | F2 "" 0 0 50 H V C CNN 200 | F3 "" 0 0 50 H V C CNN 201 | $FPLIST 202 | C? 203 | C_????_* 204 | C_???? 205 | SMD*_c 206 | Capacitor* 207 | $ENDFPLIST 208 | DRAW 209 | P 2 0 1 13 -60 -20 60 -20 N 210 | P 2 0 1 12 -60 20 60 20 N 211 | X ~ 1 0 100 75 D 40 40 1 1 P 212 | X ~ 2 0 -100 80 U 40 40 1 1 P 213 | ENDDRAW 214 | ENDDEF 215 | # 216 | # FT232RL 217 | # 218 | DEF FT232RL U 0 40 Y Y 1 F N 219 | F0 "U" -650 900 50 H V L CNN 220 | F1 "FT232RL" 400 900 50 H V L CNN 221 | F2 "SSOP-28" 0 0 50 H V C CNN 222 | F3 "" 0 0 50 H V C CNN 223 | $FPLIST 224 | SSOP* 225 | $ENDFPLIST 226 | DRAW 227 | S -650 850 650 -850 0 1 10 f 228 | X TXD 1 800 700 150 L 50 50 1 1 O 229 | X DTR 2 800 300 150 L 50 50 1 1 O V 230 | X RTS 3 800 500 150 L 50 50 1 1 O V 231 | X VCCIO 4 -100 1000 150 D 50 50 1 1 I 232 | X RXD 5 800 600 150 L 50 50 1 1 I 233 | X RI 6 800 0 150 L 50 50 1 1 I L 234 | X GND 7 0 -1000 150 U 50 50 1 1 W 235 | X DCR 9 800 200 150 L 50 50 1 1 I L 236 | X DCD 10 800 100 150 L 50 50 1 1 I L 237 | X VCC 20 100 1000 150 D 50 50 1 1 W 238 | X CTS 11 800 400 150 L 50 50 1 1 I L 239 | X GND 21 200 -1000 150 U 50 50 1 1 W 240 | X CBUS4 12 800 -700 150 L 50 50 1 1 B 241 | X CBUS1 22 800 -400 150 L 50 50 1 1 O 242 | X CBUS2 13 800 -500 150 L 50 50 1 1 B 243 | X CBUS0 23 800 -300 150 L 50 50 1 1 B 244 | X CBUS3 14 800 -600 150 L 50 50 1 1 B 245 | X USBD+ 15 -800 400 150 R 50 50 1 1 B 246 | X AGND 25 -200 -1000 150 U 50 50 1 1 W 247 | X USBD- 16 -800 300 150 R 50 50 1 1 B 248 | X TEST 26 -800 -700 150 R 50 50 1 1 W 249 | X 3V3OUT 17 -800 700 150 R 50 50 1 1 I 250 | X OSCI 27 -800 -200 150 R 50 50 1 1 I 251 | X GND 18 100 -1000 150 U 50 50 1 1 W 252 | X OSCO 28 -800 -400 150 R 50 50 1 1 O 253 | X ~RESET~ 19 -800 0 150 R 50 50 1 1 I 254 | ENDDRAW 255 | ENDDEF 256 | # 257 | # GND 258 | # 259 | DEF GND #PWR 0 0 Y Y 1 F P 260 | F0 "#PWR" 0 -250 50 H I C CNN 261 | F1 "GND" 0 -150 50 H V C CNN 262 | F2 "" 0 0 50 H V C CNN 263 | F3 "" 0 0 50 H V C CNN 264 | DRAW 265 | P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N 266 | X GND 1 0 0 0 D 50 50 1 1 W N 267 | ENDDRAW 268 | ENDDEF 269 | # 270 | # JUMPER3 271 | # 272 | DEF JUMPER3 JP 0 30 Y N 1 F N 273 | F0 "JP" 50 -100 50 H V L CNN 274 | F1 "JUMPER3" 0 100 50 H V C BNN 275 | F2 "" 0 0 50 H V C CNN 276 | F3 "" 0 0 50 H V C CNN 277 | DRAW 278 | A -60 10 64 386 1413 0 1 0 N -10 50 -110 50 279 | A 60 10 64 386 1413 0 1 0 N 110 50 10 50 280 | C -120 0 35 0 1 0 N 281 | C 0 0 36 0 1 0 N 282 | C 120 0 35 0 1 0 N 283 | X 1 1 -250 0 95 R 40 40 0 1 P 284 | X 2 2 0 -100 60 U 40 40 0 1 P 285 | X 3 3 250 0 95 L 40 40 0 1 P 286 | ENDDRAW 287 | ENDDEF 288 | # 289 | # LM555N 290 | # 291 | DEF LM555N U 0 40 Y Y 1 F N 292 | F0 "U" -400 350 50 H V L CNN 293 | F1 "LM555N" -400 -350 50 H V L CNN 294 | F2 "" 0 0 50 H V C CNN 295 | F3 "" 0 0 50 H V C CNN 296 | ALIAS NE555 297 | $FPLIST 298 | DIP* 299 | TSSOP* 300 | SOIC* 301 | $ENDFPLIST 302 | DRAW 303 | X GND 1 0 -400 100 U 50 50 0 0 W N 304 | X VCC 8 0 400 100 D 50 50 0 0 W N 305 | S -350 -300 350 300 0 1 10 f 306 | S -350 -300 350 300 0 1 10 f 307 | X TR 2 -500 200 150 R 50 50 1 1 I 308 | X Q 3 500 200 150 L 50 50 1 1 O 309 | X R 4 -500 -200 150 R 50 50 1 1 I I 310 | X CV 5 -500 0 150 R 50 50 1 1 I 311 | X THR 6 500 -200 150 L 50 50 1 1 I 312 | X DIS 7 500 0 150 L 50 50 1 1 I 313 | ENDDRAW 314 | ENDDEF 315 | # 316 | # R_Small 317 | # 318 | DEF R_Small R 0 10 N N 1 F N 319 | F0 "R" 30 20 50 H V L CNN 320 | F1 "R_Small" 30 -40 50 H V L CNN 321 | F2 "" 0 0 50 H V C CNN 322 | F3 "" 0 0 50 H V C CNN 323 | $FPLIST 324 | Resistor_* 325 | R_* 326 | $ENDFPLIST 327 | DRAW 328 | S -30 70 30 -70 0 1 8 N 329 | X ~ 1 0 100 30 D 40 40 1 1 P 330 | X ~ 2 0 -100 30 U 40 40 1 1 P 331 | ENDDRAW 332 | ENDDEF 333 | # 334 | # USB_OTG 335 | # 336 | DEF USB_OTG P 0 40 Y Y 1 F N 337 | F0 "P" 325 -125 50 H V C CNN 338 | F1 "USB_OTG" 0 200 50 H V C CNN 339 | F2 "" -50 -100 50 V V C CNN 340 | F3 "" -50 -100 50 V V C CNN 341 | $FPLIST 342 | USB* 343 | $ENDFPLIST 344 | DRAW 345 | S -250 -150 250 150 0 1 0 N 346 | S -205 -150 -195 -120 0 1 0 N 347 | S -105 -150 -95 -120 0 1 0 N 348 | S -5 -150 5 -120 0 1 0 N 349 | S 95 -150 105 -120 0 1 0 N 350 | S 195 -150 205 -120 0 1 0 N 351 | X VCC 1 -200 -300 150 U 50 50 1 1 w 352 | X D- 2 -100 -300 150 U 50 50 1 1 P 353 | X D+ 3 0 -300 150 U 50 50 1 1 P 354 | X ID 4 100 -300 150 U 50 50 1 1 W 355 | X GND 5 200 -300 150 U 50 50 1 1 W 356 | X shield 6 400 100 150 L 50 50 1 1 P 357 | ENDDRAW 358 | ENDDEF 359 | # 360 | #End Library 361 | -------------------------------------------------------------------------------- /hw/audprog_v2.net: -------------------------------------------------------------------------------- 1 | (export (version D) 2 | (design 3 | (source D:/Documents/Dropbox/Projects/HW/audprog_v2/audprog_v2.sch) 4 | (date "10.10.2016 22:38:36") 5 | (tool "Eeschema 4.0.3-stable") 6 | (sheet (number 1) (name /) (tstamps /) 7 | (title_block 8 | (title) 9 | (company) 10 | (rev) 11 | (date) 12 | (source audprog_v2.sch) 13 | (comment (number 1) (value "")) 14 | (comment (number 2) (value "")) 15 | (comment (number 3) (value "")) 16 | (comment (number 4) (value ""))))) 17 | (components 18 | (comp (ref P4) 19 | (value CONN_02X08) 20 | (footprint Pin_Headers:Pin_Header_Straight_2x08) 21 | (libsource (lib conn) (part CONN_02X08)) 22 | (sheetpath (names /) (tstamps /)) 23 | (tstamp 56DCE10F)) 24 | (comp (ref P3) 25 | (value CONN_02X04) 26 | (footprint Pin_Headers:Pin_Header_Straight_2x04) 27 | (libsource (lib conn) (part CONN_02X04)) 28 | (sheetpath (names /) (tstamps /)) 29 | (tstamp 56DCE1F6)) 30 | (comp (ref U3) 31 | (value LM555N) 32 | (footprint Housings_SOIC:SOIJ-8_5.3x5.3mm_Pitch1.27mm) 33 | (libsource (lib linear) (part LM555N)) 34 | (sheetpath (names /) (tstamps /)) 35 | (tstamp 56DCE25E)) 36 | (comp (ref U1) 37 | (value FT232RL) 38 | (footprint Housings_SSOP:SSOP-28_5.3x10.2mm_Pitch0.65mm) 39 | (libsource (lib ftdi) (part FT232RL)) 40 | (sheetpath (names /) (tstamps /)) 41 | (tstamp 57B99297)) 42 | (comp (ref P1) 43 | (value USB_OTG) 44 | (footprint Connect:USB_Micro-B) 45 | (libsource (lib conn) (part USB_OTG)) 46 | (sheetpath (names /) (tstamps /)) 47 | (tstamp 57B99EA5)) 48 | (comp (ref C1) 49 | (value 100n) 50 | (footprint Capacitors_SMD:C_0805_HandSoldering) 51 | (libsource (lib device) (part C_Small)) 52 | (sheetpath (names /) (tstamps /)) 53 | (tstamp 57B9A4A7)) 54 | (comp (ref U2) 55 | (value AP1117E33) 56 | (footprint TO_SOT_Packages_SMD:SOT-223) 57 | (libsource (lib audprog_v2-cache) (part AP1117E33)) 58 | (sheetpath (names /) (tstamps /)) 59 | (tstamp 57B9A7EA)) 60 | (comp (ref C3) 61 | (value 470u) 62 | (footprint Capacitors_ThroughHole:C_Radial_D5_L11_P2.5) 63 | (libsource (lib device) (part C_Small)) 64 | (sheetpath (names /) (tstamps /)) 65 | (tstamp 57B9BA88)) 66 | (comp (ref C2) 67 | (value 0,1u) 68 | (footprint Capacitors_SMD:C_0805_HandSoldering) 69 | (libsource (lib device) (part C_Small)) 70 | (sheetpath (names /) (tstamps /)) 71 | (tstamp 57B9BAE1)) 72 | (comp (ref C4) 73 | (value 0,1u) 74 | (footprint Capacitors_SMD:C_0805_HandSoldering) 75 | (libsource (lib device) (part C_Small)) 76 | (sheetpath (names /) (tstamps /)) 77 | (tstamp 57B9BB08)) 78 | (comp (ref C5) 79 | (value 470u) 80 | (footprint Capacitors_ThroughHole:C_Radial_D5_L11_P2.5) 81 | (libsource (lib device) (part C_Small)) 82 | (sheetpath (names /) (tstamps /)) 83 | (tstamp 57B9BB47)) 84 | (comp (ref JP1) 85 | (value Vcc_IO_SW) 86 | (footprint Pin_Headers:Pin_Header_Straight_1x03) 87 | (libsource (lib device) (part JUMPER3)) 88 | (sheetpath (names /) (tstamps /)) 89 | (tstamp 57B9C69B)) 90 | (comp (ref C6) 91 | (value 100n) 92 | (footprint Capacitors_SMD:C_0805_HandSoldering) 93 | (libsource (lib device) (part C_Small)) 94 | (sheetpath (names /) (tstamps /)) 95 | (tstamp 57B9D5D9)) 96 | (comp (ref C7) 97 | (value 10n) 98 | (footprint Capacitors_SMD:C_0805_HandSoldering) 99 | (libsource (lib device) (part C_Small)) 100 | (sheetpath (names /) (tstamps /)) 101 | (tstamp 57B9D64D)) 102 | (comp (ref R16) 103 | (value 47,5k) 104 | (footprint Resistors_SMD:R_0805_HandSoldering) 105 | (libsource (lib device) (part R_Small)) 106 | (sheetpath (names /) (tstamps /)) 107 | (tstamp 57B9DB58)) 108 | (comp (ref R13) 109 | (value 1k) 110 | (footprint Resistors_SMD:R_0805_HandSoldering) 111 | (libsource (lib device) (part R_Small)) 112 | (sheetpath (names /) (tstamps /)) 113 | (tstamp 57B9DBB5)) 114 | (comp (ref R15) 115 | (value 10k) 116 | (footprint Resistors_SMD:R_0805_HandSoldering) 117 | (libsource (lib device) (part R_Small)) 118 | (sheetpath (names /) (tstamps /)) 119 | (tstamp 57B9DBF8)) 120 | (comp (ref Q1) 121 | (value BC817) 122 | (footprint TO_SOT_Packages_SMD:SOT-23_Handsoldering) 123 | (libsource (lib transistors) (part BC817-40)) 124 | (sheetpath (names /) (tstamps /)) 125 | (tstamp 57B9DC7C)) 126 | (comp (ref R17) 127 | (value 10k) 128 | (footprint Resistors_SMD:R_0805_HandSoldering) 129 | (libsource (lib device) (part R_Small)) 130 | (sheetpath (names /) (tstamps /)) 131 | (tstamp 57B9DE59)) 132 | (comp (ref R1) 133 | (value 5,6k) 134 | (footprint Resistors_SMD:R_0805_HandSoldering) 135 | (libsource (lib device) (part R_Small)) 136 | (sheetpath (names /) (tstamps /)) 137 | (tstamp 57BA14DF)) 138 | (comp (ref R2) 139 | (value 5,6k) 140 | (footprint Resistors_SMD:R_0805_HandSoldering) 141 | (libsource (lib device) (part R_Small)) 142 | (sheetpath (names /) (tstamps /)) 143 | (tstamp 57BA1542)) 144 | (comp (ref R9) 145 | (value 22) 146 | (footprint Resistors_SMD:R_0805_HandSoldering) 147 | (libsource (lib device) (part R_Small)) 148 | (sheetpath (names /) (tstamps /)) 149 | (tstamp 57BA19FC)) 150 | (comp (ref R4) 151 | (value 22) 152 | (footprint Resistors_SMD:R_0805_HandSoldering) 153 | (libsource (lib device) (part R_Small)) 154 | (sheetpath (names /) (tstamps /)) 155 | (tstamp 57BA1A61)) 156 | (comp (ref R6) 157 | (value 22) 158 | (footprint Resistors_SMD:R_0805_HandSoldering) 159 | (libsource (lib device) (part R_Small)) 160 | (sheetpath (names /) (tstamps /)) 161 | (tstamp 57BA279F)) 162 | (comp (ref R8) 163 | (value 22) 164 | (footprint Resistors_SMD:R_0805_HandSoldering) 165 | (libsource (lib device) (part R_Small)) 166 | (sheetpath (names /) (tstamps /)) 167 | (tstamp 57BA281D)) 168 | (comp (ref R10) 169 | (value 22) 170 | (footprint Resistors_SMD:R_0805_HandSoldering) 171 | (libsource (lib device) (part R_Small)) 172 | (sheetpath (names /) (tstamps /)) 173 | (tstamp 57BA289A)) 174 | (comp (ref R5) 175 | (value 22) 176 | (footprint Resistors_SMD:R_0805_HandSoldering) 177 | (libsource (lib device) (part R_Small)) 178 | (sheetpath (names /) (tstamps /)) 179 | (tstamp 57BA2A8A)) 180 | (comp (ref R3) 181 | (value 5,6k) 182 | (footprint Resistors_SMD:R_0805_HandSoldering) 183 | (libsource (lib device) (part R_Small)) 184 | (sheetpath (names /) (tstamps /)) 185 | (tstamp 57BA3976)) 186 | (comp (ref R7) 187 | (value 22) 188 | (footprint Resistors_SMD:R_0805_HandSoldering) 189 | (libsource (lib device) (part R_Small)) 190 | (sheetpath (names /) (tstamps /)) 191 | (tstamp 57BA3CD1)) 192 | (comp (ref R11) 193 | (value 22) 194 | (footprint Resistors_SMD:R_0805_HandSoldering) 195 | (libsource (lib device) (part R_Small)) 196 | (sheetpath (names /) (tstamps /)) 197 | (tstamp 57BA3F48)) 198 | (comp (ref R12) 199 | (value 10k) 200 | (footprint Resistors_SMD:R_0805_HandSoldering) 201 | (libsource (lib device) (part R_Small)) 202 | (sheetpath (names /) (tstamps /)) 203 | (tstamp 57BA63F4)) 204 | (comp (ref R14) 205 | (value 10k) 206 | (footprint Resistors_SMD:R_0805_HandSoldering) 207 | (libsource (lib device) (part R_Small)) 208 | (sheetpath (names /) (tstamps /)) 209 | (tstamp 57BA66A4)) 210 | (comp (ref P2) 211 | (value CONN_01X05) 212 | (footprint Pin_Headers:Pin_Header_Straight_1x05) 213 | (libsource (lib conn) (part CONN_01X05)) 214 | (sheetpath (names /) (tstamps /)) 215 | (tstamp 57BAE288))) 216 | (libparts 217 | (libpart (lib audprog_v2-cache) (part AP1117) 218 | (aliases 219 | (alias AP1117D15) 220 | (alias AP1117D18) 221 | (alias AP1117D25) 222 | (alias AP1117D33) 223 | (alias AP1117D50) 224 | (alias AP1117E15) 225 | (alias AP1117E18) 226 | (alias AP1117E25) 227 | (alias AP1117E33) 228 | (alias AP1117E50) 229 | (alias AP1117K15) 230 | (alias AP1117K18) 231 | (alias AP1117K25) 232 | (alias AP1117K33) 233 | (alias AP1117K50) 234 | (alias AP1117T15) 235 | (alias AP1117T18) 236 | (alias AP1117T25) 237 | (alias AP1117T33) 238 | (alias AP1117T50) 239 | (alias AP1117Y15) 240 | (alias AP1117Y18) 241 | (alias AP1117Y25) 242 | (alias AP1117Y33) 243 | (alias AP1117Y50)) 244 | (footprints 245 | (fp SOT223) 246 | (fp SOT89-3) 247 | (fp TO220-3) 248 | (fp TO252) 249 | (fp TO263)) 250 | (fields 251 | (field (name Reference) U) 252 | (field (name Value) AP1117)) 253 | (pins 254 | (pin (num 1) (name GND/ADJ) (type power_in)) 255 | (pin (num 2) (name VO) (type power_out)) 256 | (pin (num 3) (name VI) (type power_in)))) 257 | (libpart (lib transistors) (part BC817-40) 258 | (aliases 259 | (alias BC818-40)) 260 | (description "45V Vce, 0.8A Ic, NPN, SOT-23") 261 | (docs http://www.fairchildsemi.com/ds/BC/BC817.pdf) 262 | (footprints 263 | (fp SOT-23*)) 264 | (fields 265 | (field (name Reference) Q) 266 | (field (name Value) BC817-40) 267 | (field (name Footprint) SOT-23)) 268 | (pins 269 | (pin (num 1) (name B) (type input)) 270 | (pin (num 2) (name E) (type passive)) 271 | (pin (num 3) (name C) (type passive)))) 272 | (libpart (lib conn) (part CONN_01X05) 273 | (description "Connector, single row, 01x05") 274 | (footprints 275 | (fp Pin_Header_Straight_1X05) 276 | (fp Pin_Header_Angled_1X05) 277 | (fp Socket_Strip_Straight_1X05) 278 | (fp Socket_Strip_Angled_1X05)) 279 | (fields 280 | (field (name Reference) P) 281 | (field (name Value) CONN_01X05)) 282 | (pins 283 | (pin (num 1) (name P1) (type passive)) 284 | (pin (num 2) (name P2) (type passive)) 285 | (pin (num 3) (name P3) (type passive)) 286 | (pin (num 4) (name P4) (type passive)) 287 | (pin (num 5) (name P5) (type passive)))) 288 | (libpart (lib conn) (part CONN_02X04) 289 | (description "Connector, double row, 02x04") 290 | (footprints 291 | (fp Pin_Header_Straight_2X04) 292 | (fp Pin_Header_Angled_2X04) 293 | (fp Socket_Strip_Straight_2X04) 294 | (fp Socket_Strip_Angled_2X04)) 295 | (fields 296 | (field (name Reference) P) 297 | (field (name Value) CONN_02X04)) 298 | (pins 299 | (pin (num 1) (name P1) (type passive)) 300 | (pin (num 2) (name P2) (type passive)) 301 | (pin (num 3) (name P3) (type passive)) 302 | (pin (num 4) (name P4) (type passive)) 303 | (pin (num 5) (name P5) (type passive)) 304 | (pin (num 6) (name P6) (type passive)) 305 | (pin (num 7) (name P7) (type passive)) 306 | (pin (num 8) (name P8) (type passive)))) 307 | (libpart (lib conn) (part CONN_02X08) 308 | (description "Connector, double row, 02x08") 309 | (footprints 310 | (fp Pin_Header_Straight_2X08) 311 | (fp Pin_Header_Angled_2X08) 312 | (fp Socket_Strip_Straight_2X08) 313 | (fp Socket_Strip_Angled_2X08)) 314 | (fields 315 | (field (name Reference) P) 316 | (field (name Value) CONN_02X08)) 317 | (pins 318 | (pin (num 1) (name P1) (type passive)) 319 | (pin (num 2) (name P2) (type passive)) 320 | (pin (num 3) (name P3) (type passive)) 321 | (pin (num 4) (name P4) (type passive)) 322 | (pin (num 5) (name P5) (type passive)) 323 | (pin (num 6) (name P6) (type passive)) 324 | (pin (num 7) (name P7) (type passive)) 325 | (pin (num 8) (name P8) (type passive)) 326 | (pin (num 9) (name P9) (type passive)) 327 | (pin (num 10) (name P10) (type passive)) 328 | (pin (num 11) (name P11) (type passive)) 329 | (pin (num 12) (name P12) (type passive)) 330 | (pin (num 13) (name P13) (type passive)) 331 | (pin (num 14) (name P14) (type passive)) 332 | (pin (num 15) (name P15) (type passive)) 333 | (pin (num 16) (name P16) (type passive)))) 334 | (libpart (lib device) (part C_Small) 335 | (description "Unpolarized capacitor") 336 | (footprints 337 | (fp C?) 338 | (fp C_????_*) 339 | (fp C_????) 340 | (fp SMD*_c) 341 | (fp Capacitor*)) 342 | (fields 343 | (field (name Reference) C) 344 | (field (name Value) C_Small)) 345 | (pins 346 | (pin (num 1) (name ~) (type passive)) 347 | (pin (num 2) (name ~) (type passive)))) 348 | (libpart (lib ftdi) (part FT232RL) 349 | (description "USB to Serial Interface, SSOP-28") 350 | (docs http://www.ftdichip.com/Products/ICs/FT232RL.htm) 351 | (footprints 352 | (fp SSOP*)) 353 | (fields 354 | (field (name Reference) U) 355 | (field (name Value) FT232RL) 356 | (field (name Footprint) SSOP-28)) 357 | (pins 358 | (pin (num 1) (name TXD) (type output)) 359 | (pin (num 2) (name DTR) (type output)) 360 | (pin (num 3) (name RTS) (type output)) 361 | (pin (num 4) (name VCCIO) (type input)) 362 | (pin (num 5) (name RXD) (type input)) 363 | (pin (num 6) (name RI) (type input)) 364 | (pin (num 7) (name GND) (type power_in)) 365 | (pin (num 9) (name DCR) (type input)) 366 | (pin (num 10) (name DCD) (type input)) 367 | (pin (num 11) (name CTS) (type input)) 368 | (pin (num 12) (name CBUS4) (type BiDi)) 369 | (pin (num 13) (name CBUS2) (type BiDi)) 370 | (pin (num 14) (name CBUS3) (type BiDi)) 371 | (pin (num 15) (name USBD+) (type BiDi)) 372 | (pin (num 16) (name USBD-) (type BiDi)) 373 | (pin (num 17) (name 3V3OUT) (type input)) 374 | (pin (num 18) (name GND) (type power_in)) 375 | (pin (num 19) (name ~RESET~) (type input)) 376 | (pin (num 20) (name VCC) (type power_in)) 377 | (pin (num 21) (name GND) (type power_in)) 378 | (pin (num 22) (name CBUS1) (type output)) 379 | (pin (num 23) (name CBUS0) (type BiDi)) 380 | (pin (num 25) (name AGND) (type power_in)) 381 | (pin (num 26) (name TEST) (type power_in)) 382 | (pin (num 27) (name OSCI) (type input)) 383 | (pin (num 28) (name OSCO) (type output)))) 384 | (libpart (lib device) (part JUMPER3) 385 | (fields 386 | (field (name Reference) JP) 387 | (field (name Value) JUMPER3)) 388 | (pins 389 | (pin (num 1) (name 1) (type passive)) 390 | (pin (num 2) (name 2) (type passive)) 391 | (pin (num 3) (name 3) (type passive)))) 392 | (libpart (lib linear) (part LM555N) 393 | (aliases 394 | (alias NE555)) 395 | (description "555-series timer IC") 396 | (docs ns/lm555.pdf) 397 | (footprints 398 | (fp DIP*) 399 | (fp TSSOP*) 400 | (fp SOIC*)) 401 | (fields 402 | (field (name Reference) U) 403 | (field (name Value) LM555N)) 404 | (pins 405 | (pin (num 1) (name GND) (type power_in)) 406 | (pin (num 2) (name TR) (type input)) 407 | (pin (num 3) (name Q) (type output)) 408 | (pin (num 4) (name R) (type input)) 409 | (pin (num 5) (name CV) (type input)) 410 | (pin (num 6) (name THR) (type input)) 411 | (pin (num 7) (name DIS) (type input)) 412 | (pin (num 8) (name VCC) (type power_in)))) 413 | (libpart (lib device) (part R_Small) 414 | (description Resistor) 415 | (footprints 416 | (fp Resistor_*) 417 | (fp R_*)) 418 | (fields 419 | (field (name Reference) R) 420 | (field (name Value) R_Small)) 421 | (pins 422 | (pin (num 1) (name ~) (type passive)) 423 | (pin (num 2) (name ~) (type passive)))) 424 | (libpart (lib conn) (part USB_OTG) 425 | (description "USB micro/mini connector") 426 | (footprints 427 | (fp USB*)) 428 | (fields 429 | (field (name Reference) P) 430 | (field (name Value) USB_OTG)) 431 | (pins 432 | (pin (num 1) (name VCC) (type power_out)) 433 | (pin (num 2) (name D-) (type passive)) 434 | (pin (num 3) (name D+) (type passive)) 435 | (pin (num 4) (name ID) (type power_in)) 436 | (pin (num 5) (name GND) (type power_in)) 437 | (pin (num 6) (name shield) (type passive))))) 438 | (libraries 439 | (library (logical device) 440 | (uri D:\Dev\KiCad\share\kicad\library\device.lib)) 441 | (library (logical transistors) 442 | (uri D:\Dev\KiCad\share\kicad\library\transistors.lib)) 443 | (library (logical conn) 444 | (uri D:\Dev\KiCad\share\kicad\library\conn.lib)) 445 | (library (logical linear) 446 | (uri D:\Dev\KiCad\share\kicad\library\linear.lib)) 447 | (library (logical ftdi) 448 | (uri D:\Dev\KiCad\share\kicad\library\ftdi.lib)) 449 | (library (logical audprog_v2-cache) 450 | (uri D:\Documents\Dropbox\Projects\HW\audprog_v2\audprog_v2-cache.lib))) 451 | (nets 452 | (net (code 1) (name "Net-(P3-Pad5)") 453 | (node (ref R12) (pin 1)) 454 | (node (ref P3) (pin 5))) 455 | (net (code 2) (name "Net-(P3-Pad4)") 456 | (node (ref R14) (pin 2)) 457 | (node (ref P3) (pin 4))) 458 | (net (code 3) (name "Net-(Q1-Pad1)") 459 | (node (ref Q1) (pin 1)) 460 | (node (ref R15) (pin 1))) 461 | (net (code 4) (name "Net-(R13-Pad2)") 462 | (node (ref R16) (pin 2)) 463 | (node (ref R13) (pin 2)) 464 | (node (ref U3) (pin 7))) 465 | (net (code 5) (name "Net-(R15-Pad2)") 466 | (node (ref U3) (pin 3)) 467 | (node (ref R15) (pin 2))) 468 | (net (code 6) (name CBUS3) 469 | (node (ref P2) (pin 3)) 470 | (node (ref U1) (pin 13))) 471 | (net (code 7) (name CBUS1) 472 | (node (ref U1) (pin 23)) 473 | (node (ref P2) (pin 1))) 474 | (net (code 8) (name CBUS2) 475 | (node (ref P2) (pin 2)) 476 | (node (ref U1) (pin 22))) 477 | (net (code 9) (name CBUS4) 478 | (node (ref U1) (pin 14)) 479 | (node (ref P2) (pin 4))) 480 | (net (code 10) (name CBUS5) 481 | (node (ref P2) (pin 5)) 482 | (node (ref U1) (pin 12))) 483 | (net (code 11) (name VCC_IO) 484 | (node (ref P4) (pin 1)) 485 | (node (ref R1) (pin 1)) 486 | (node (ref R2) (pin 1)) 487 | (node (ref JP1) (pin 2)) 488 | (node (ref R3) (pin 1)) 489 | (node (ref R12) (pin 2)) 490 | (node (ref R14) (pin 1)) 491 | (node (ref R17) (pin 1)) 492 | (node (ref U1) (pin 4)) 493 | (node (ref P3) (pin 2))) 494 | (net (code 12) (name "Net-(C1-Pad1)") 495 | (node (ref C1) (pin 1)) 496 | (node (ref U1) (pin 17))) 497 | (net (code 13) (name GND) 498 | (node (ref Q1) (pin 2)) 499 | (node (ref C6) (pin 2)) 500 | (node (ref C7) (pin 2)) 501 | (node (ref C5) (pin 2)) 502 | (node (ref U1) (pin 18)) 503 | (node (ref C1) (pin 2)) 504 | (node (ref P4) (pin 14)) 505 | (node (ref U3) (pin 1)) 506 | (node (ref P3) (pin 7)) 507 | (node (ref P4) (pin 13)) 508 | (node (ref C3) (pin 2)) 509 | (node (ref C2) (pin 2)) 510 | (node (ref C4) (pin 2)) 511 | (node (ref U1) (pin 26)) 512 | (node (ref P4) (pin 2)) 513 | (node (ref U1) (pin 7)) 514 | (node (ref U1) (pin 25)) 515 | (node (ref U1) (pin 21)) 516 | (node (ref U2) (pin 1)) 517 | (node (ref P1) (pin 5))) 518 | (net (code 14) (name +5V) 519 | (node (ref U3) (pin 8)) 520 | (node (ref C3) (pin 1)) 521 | (node (ref C2) (pin 1)) 522 | (node (ref R13) (pin 1)) 523 | (node (ref P1) (pin 1)) 524 | (node (ref U1) (pin 20)) 525 | (node (ref U2) (pin 3)) 526 | (node (ref U3) (pin 4)) 527 | (node (ref JP1) (pin 1))) 528 | (net (code 15) (name "Net-(C6-Pad1)") 529 | (node (ref U3) (pin 6)) 530 | (node (ref R16) (pin 1)) 531 | (node (ref U3) (pin 2)) 532 | (node (ref C6) (pin 1))) 533 | (net (code 16) (name "Net-(C7-Pad1)") 534 | (node (ref C7) (pin 1)) 535 | (node (ref U3) (pin 5))) 536 | (net (code 17) (name "Net-(R4-Pad2)") 537 | (node (ref U1) (pin 1)) 538 | (node (ref R4) (pin 2))) 539 | (net (code 18) (name +3V3) 540 | (node (ref JP1) (pin 3)) 541 | (node (ref U2) (pin 2)) 542 | (node (ref C5) (pin 1)) 543 | (node (ref C4) (pin 1))) 544 | (net (code 19) (name AUD_DATA0) 545 | (node (ref R6) (pin 1)) 546 | (node (ref P4) (pin 5))) 547 | (net (code 20) (name AUD_DATA2) 548 | (node (ref R11) (pin 1)) 549 | (node (ref P4) (pin 7))) 550 | (net (code 21) (name AUD_DATA3) 551 | (node (ref P4) (pin 8)) 552 | (node (ref R9) (pin 1))) 553 | (net (code 22) (name "Net-(R3-Pad2)") 554 | (node (ref R7) (pin 2)) 555 | (node (ref R3) (pin 2)) 556 | (node (ref U1) (pin 11))) 557 | (net (code 23) (name "Net-(R2-Pad2)") 558 | (node (ref R2) (pin 2)) 559 | (node (ref U1) (pin 2)) 560 | (node (ref R8) (pin 2))) 561 | (net (code 24) (name "Net-(R1-Pad2)") 562 | (node (ref R1) (pin 2)) 563 | (node (ref R10) (pin 2)) 564 | (node (ref U1) (pin 10))) 565 | (net (code 25) (name AUD_CK) 566 | (node (ref P4) (pin 9)) 567 | (node (ref R10) (pin 1)) 568 | (node (ref P3) (pin 6))) 569 | (net (code 26) (name "Net-(P4-Pad4)") 570 | (node (ref P4) (pin 4))) 571 | (net (code 27) (name AUD_SYNC) 572 | (node (ref R7) (pin 1)) 573 | (node (ref P4) (pin 10)) 574 | (node (ref P3) (pin 8))) 575 | (net (code 28) (name AUD_RST) 576 | (node (ref P3) (pin 1)) 577 | (node (ref P4) (pin 3)) 578 | (node (ref R8) (pin 1))) 579 | (net (code 29) (name BOOT_TX) 580 | (node (ref R4) (pin 1)) 581 | (node (ref P4) (pin 11)) 582 | (node (ref P3) (pin 3))) 583 | (net (code 30) (name AUD_DATA1) 584 | (node (ref R5) (pin 1)) 585 | (node (ref P4) (pin 6)) 586 | (node (ref P4) (pin 12))) 587 | (net (code 31) (name "Net-(R11-Pad2)") 588 | (node (ref R11) (pin 2)) 589 | (node (ref U1) (pin 6))) 590 | (net (code 32) (name "Net-(R9-Pad2)") 591 | (node (ref R9) (pin 2)) 592 | (node (ref U1) (pin 9))) 593 | (net (code 33) (name "Net-(R6-Pad2)") 594 | (node (ref U1) (pin 3)) 595 | (node (ref R6) (pin 2))) 596 | (net (code 34) (name "Net-(R5-Pad2)") 597 | (node (ref U1) (pin 5)) 598 | (node (ref R5) (pin 2))) 599 | (net (code 35) (name WDT) 600 | (node (ref Q1) (pin 3)) 601 | (node (ref R17) (pin 2)) 602 | (node (ref P4) (pin 16)) 603 | (node (ref P4) (pin 15))) 604 | (net (code 36) (name "Net-(P1-Pad2)") 605 | (node (ref U1) (pin 16)) 606 | (node (ref P1) (pin 2))) 607 | (net (code 37) (name "Net-(P1-Pad4)") 608 | (node (ref P1) (pin 4))) 609 | (net (code 38) (name "Net-(P1-Pad6)") 610 | (node (ref P1) (pin 6))) 611 | (net (code 39) (name "Net-(U1-Pad19)") 612 | (node (ref U1) (pin 19))) 613 | (net (code 40) (name "Net-(U1-Pad28)") 614 | (node (ref U1) (pin 28))) 615 | (net (code 41) (name "Net-(U1-Pad27)") 616 | (node (ref U1) (pin 27))) 617 | (net (code 42) (name "Net-(P1-Pad3)") 618 | (node (ref U1) (pin 15)) 619 | (node (ref P1) (pin 3))))) -------------------------------------------------------------------------------- /hw/audprog_v2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-ladimir/audprog/2f5b9a235e91062f2966746c037435bd77d34cca/hw/audprog_v2.pdf -------------------------------------------------------------------------------- /hw/audprog_v2.pro: -------------------------------------------------------------------------------- 1 | update=9/14/2016 11:11:40 AM 2 | version=1 3 | last_client=kicad 4 | [pcbnew] 5 | version=1 6 | LastNetListRead= 7 | UseCmpFile=1 8 | PadDrill=0.600000000000 9 | PadDrillOvalY=0.600000000000 10 | PadSizeH=1.500000000000 11 | PadSizeV=1.500000000000 12 | PcbTextSizeV=1.500000000000 13 | PcbTextSizeH=1.500000000000 14 | PcbTextThickness=0.300000000000 15 | ModuleTextSizeV=1.000000000000 16 | ModuleTextSizeH=1.000000000000 17 | ModuleTextSizeThickness=0.150000000000 18 | SolderMaskClearance=0.000000000000 19 | SolderMaskMinWidth=0.000000000000 20 | DrawSegmentWidth=0.200000000000 21 | BoardOutlineThickness=0.100000000000 22 | ModuleOutlineThickness=0.150000000000 23 | [cvpcb] 24 | version=1 25 | NetIExt=net 26 | [general] 27 | version=1 28 | [eeschema] 29 | version=1 30 | LibDir=C:/Program Files/KiCad/share/kicad/library 31 | [eeschema/libraries] 32 | LibName1=power 33 | LibName2=device 34 | LibName3=transistors 35 | LibName4=conn 36 | LibName5=linear 37 | LibName6=regul 38 | LibName7=74xx 39 | LibName8=cmos4000 40 | LibName9=adc-dac 41 | LibName10=memory 42 | LibName11=xilinx 43 | LibName12=microcontrollers 44 | LibName13=dsp 45 | LibName14=microchip 46 | LibName15=analog_switches 47 | LibName16=motorola 48 | LibName17=texas 49 | LibName18=intel 50 | LibName19=audio 51 | LibName20=interface 52 | LibName21=digital-audio 53 | LibName22=philips 54 | LibName23=display 55 | LibName24=cypress 56 | LibName25=siliconi 57 | LibName26=opto 58 | LibName27=atmel 59 | LibName28=contrib 60 | LibName29=valves 61 | LibName30=C:/Program Files/KiCad/share/kicad/library/ftdi 62 | [schematic_editor] 63 | version=1 64 | PageLayoutDescrFile=page_layout.kicad_wks 65 | PlotDirectoryName= 66 | SubpartIdSeparator=0 67 | SubpartFirstId=65 68 | NetFmtName=Pcbnew 69 | SpiceForceRefPrefix=0 70 | SpiceUseNetNumbers=0 71 | LabSize=39 72 | -------------------------------------------------------------------------------- /hw/audprog_v2.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 2 2 | LIBS:power 3 | LIBS:device 4 | LIBS:transistors 5 | LIBS:conn 6 | LIBS:linear 7 | LIBS:regul 8 | LIBS:74xx 9 | LIBS:cmos4000 10 | LIBS:adc-dac 11 | LIBS:memory 12 | LIBS:xilinx 13 | LIBS:microcontrollers 14 | LIBS:dsp 15 | LIBS:microchip 16 | LIBS:analog_switches 17 | LIBS:motorola 18 | LIBS:texas 19 | LIBS:intel 20 | LIBS:audio 21 | LIBS:interface 22 | LIBS:digital-audio 23 | LIBS:philips 24 | LIBS:display 25 | LIBS:cypress 26 | LIBS:siliconi 27 | LIBS:opto 28 | LIBS:atmel 29 | LIBS:contrib 30 | LIBS:valves 31 | LIBS:ftdi 32 | LIBS:audprog_v2-cache 33 | EELAYER 25 0 34 | EELAYER END 35 | $Descr A4 11693 8268 36 | encoding utf-8 37 | Sheet 1 1 38 | Title "" 39 | Date "" 40 | Rev "" 41 | Comp "" 42 | Comment1 "" 43 | Comment2 "" 44 | Comment3 "" 45 | Comment4 "" 46 | $EndDescr 47 | $Comp 48 | L CONN_02X08 P4 49 | U 1 1 56DCE10F 50 | P 8525 2400 51 | F 0 "P4" H 8525 2850 50 0000 C CNN 52 | F 1 "CONN_02X08" V 8525 2400 50 0000 C CNN 53 | F 2 "Pin_Headers:Pin_Header_Straight_2x08" H 8525 1200 50 0001 C CNN 54 | F 3 "" H 8525 1200 50 0000 C CNN 55 | 1 8525 2400 56 | 1 0 0 -1 57 | $EndComp 58 | $Comp 59 | L CONN_02X04 P3 60 | U 1 1 56DCE1F6 61 | P 8400 3900 62 | F 0 "P3" H 8400 4150 50 0000 C CNN 63 | F 1 "CONN_02X04" H 8400 3650 50 0000 C CNN 64 | F 2 "Pin_Headers:Pin_Header_Straight_2x04" H 8400 2700 50 0001 C CNN 65 | F 3 "" H 8400 2700 50 0000 C CNN 66 | 1 8400 3900 67 | 1 0 0 -1 68 | $EndComp 69 | $Comp 70 | L LM555N U3 71 | U 1 1 56DCE25E 72 | P 7975 5800 73 | F 0 "U3" H 7925 6200 50 0000 L CNN 74 | F 1 "LM555N" H 7775 5450 50 0000 L CNN 75 | F 2 "Housings_SOIC:SOIJ-8_5.3x5.3mm_Pitch1.27mm" H 7975 5800 50 0001 C CNN 76 | F 3 "" H 7975 5800 50 0000 C CNN 77 | 1 7975 5800 78 | 1 0 0 -1 79 | $EndComp 80 | $Comp 81 | L FT232RL U1 82 | U 1 1 57B99297 83 | P 3475 2925 84 | F 0 "U1" H 2825 3825 50 0000 L CNN 85 | F 1 "FT232RL" H 3875 3825 50 0000 L CNN 86 | F 2 "Housings_SSOP:SSOP-28_5.3x10.2mm_Pitch0.65mm" H 3475 2925 50 0001 C CNN 87 | F 3 "" H 3475 2925 50 0000 C CNN 88 | 1 3475 2925 89 | 1 0 0 -1 90 | $EndComp 91 | Text GLabel 2200 6450 2 39 Input ~ 0 92 | AUD_SYNC 93 | Text GLabel 2200 6750 2 39 Input ~ 0 94 | AUD_CK 95 | Text GLabel 2200 6650 2 39 Input ~ 0 96 | AUD_DATA3 97 | Text GLabel 2200 6850 2 39 Input ~ 0 98 | AUD_DATA2 99 | Text GLabel 2200 6250 2 39 Input ~ 0 100 | AUD_DATA1 101 | Text GLabel 2200 6350 2 39 Input ~ 0 102 | AUD_DATA0 103 | Text GLabel 2200 6550 2 39 Input ~ 0 104 | AUD_RST 105 | Text GLabel 2200 5975 2 39 Input ~ 0 106 | SPI_CS 107 | Text GLabel 2200 5875 2 39 Input ~ 0 108 | SPI_DI 109 | Text GLabel 2200 5775 2 39 Input ~ 0 110 | SPI_DO 111 | Text GLabel 2200 5675 2 39 Input ~ 0 112 | SPI_SCK 113 | $Comp 114 | L USB_OTG P1 115 | U 1 1 57B99EA5 116 | P 1675 2525 117 | F 0 "P1" H 2000 2400 50 0000 C CNN 118 | F 1 "USB_OTG" H 1675 2725 50 0000 C CNN 119 | F 2 "Connect:USB_Micro-B" V 1625 2425 50 0001 C CNN 120 | F 3 "" V 1625 2425 50 0000 C CNN 121 | 1 1675 2525 122 | 0 -1 -1 0 123 | $EndComp 124 | NoConn ~ 1975 2425 125 | $Comp 126 | L GND #PWR01 127 | U 1 1 57B9A44E 128 | P 2125 2925 129 | F 0 "#PWR01" H 2125 2675 50 0001 C CNN 130 | F 1 "GND" H 2125 2775 50 0000 C CNN 131 | F 2 "" H 2125 2925 50 0000 C CNN 132 | F 3 "" H 2125 2925 50 0000 C CNN 133 | 1 2125 2925 134 | 1 0 0 -1 135 | $EndComp 136 | $Comp 137 | L C_Small C1 138 | U 1 1 57B9A4A7 139 | P 2125 2125 140 | F 0 "C1" H 2135 2195 50 0000 L CNN 141 | F 1 "100n" H 2135 2045 50 0000 L CNN 142 | F 2 "Capacitors_SMD:C_0805_HandSoldering" H 2125 2125 50 0001 C CNN 143 | F 3 "" H 2125 2125 50 0000 C CNN 144 | 1 2125 2125 145 | 1 0 0 -1 146 | $EndComp 147 | $Comp 148 | L +5V #PWR02 149 | U 1 1 57B9A5D8 150 | P 3575 1625 151 | F 0 "#PWR02" H 3575 1475 50 0001 C CNN 152 | F 1 "+5V" H 3575 1765 50 0000 C CNN 153 | F 2 "" H 3575 1625 50 0000 C CNN 154 | F 3 "" H 3575 1625 50 0000 C CNN 155 | 1 3575 1625 156 | 1 0 0 -1 157 | $EndComp 158 | $Comp 159 | L AP1117E33 U2 160 | U 1 1 57B9A7EA 161 | P 5575 5875 162 | F 0 "U2" H 5675 5625 50 0000 C CNN 163 | F 1 "AP1117E33" H 5575 6125 50 0000 C CNN 164 | F 2 "TO_SOT_Packages_SMD:SOT-223" H 5575 5875 50 0001 C CNN 165 | F 3 "" H 5575 5875 50 0000 C CNN 166 | 1 5575 5875 167 | 1 0 0 -1 168 | $EndComp 169 | Text GLabel 3375 1675 1 39 Input ~ 0 170 | VCC_IO 171 | NoConn ~ 2675 2925 172 | NoConn ~ 2675 3125 173 | NoConn ~ 2675 3325 174 | Text GLabel 4625 3225 2 39 Input ~ 0 175 | CBUS1 176 | Text GLabel 4625 3325 2 39 Input ~ 0 177 | CBUS2 178 | Text GLabel 4625 3425 2 39 Input ~ 0 179 | CBUS3 180 | Text GLabel 4625 3525 2 39 Input ~ 0 181 | CBUS4 182 | Text GLabel 4625 3625 2 39 Input ~ 0 183 | CBUS5 184 | $Comp 185 | L +5V #PWR03 186 | U 1 1 57B9B497 187 | P 2525 1625 188 | F 0 "#PWR03" H 2525 1475 50 0001 C CNN 189 | F 1 "+5V" H 2525 1765 50 0000 C CNN 190 | F 2 "" H 2525 1625 50 0000 C CNN 191 | F 3 "" H 2525 1625 50 0000 C CNN 192 | 1 2525 1625 193 | 1 0 0 -1 194 | $EndComp 195 | NoConn ~ 1575 2125 196 | $Comp 197 | L GND #PWR04 198 | U 1 1 57B9BA66 199 | P 5575 6375 200 | F 0 "#PWR04" H 5575 6125 50 0001 C CNN 201 | F 1 "GND" H 5575 6225 50 0000 C CNN 202 | F 2 "" H 5575 6375 50 0000 C CNN 203 | F 3 "" H 5575 6375 50 0000 C CNN 204 | 1 5575 6375 205 | 1 0 0 -1 206 | $EndComp 207 | $Comp 208 | L C_Small C3 209 | U 1 1 57B9BA88 210 | P 5025 6025 211 | F 0 "C3" H 5035 6095 50 0000 L CNN 212 | F 1 "470u" H 5035 5945 50 0000 L CNN 213 | F 2 "Capacitors_ThroughHole:C_Radial_D5_L11_P2.5" H 5025 6025 50 0001 C CNN 214 | F 3 "" H 5025 6025 50 0000 C CNN 215 | 1 5025 6025 216 | 1 0 0 -1 217 | $EndComp 218 | $Comp 219 | L C_Small C2 220 | U 1 1 57B9BAE1 221 | P 4825 6025 222 | F 0 "C2" H 4835 6095 50 0000 L CNN 223 | F 1 "0,1u" H 4835 5945 50 0000 L CNN 224 | F 2 "Capacitors_SMD:C_0805_HandSoldering" H 4825 6025 50 0001 C CNN 225 | F 3 "" H 4825 6025 50 0000 C CNN 226 | 1 4825 6025 227 | 1 0 0 -1 228 | $EndComp 229 | $Comp 230 | L C_Small C4 231 | U 1 1 57B9BB08 232 | P 6075 6025 233 | F 0 "C4" H 6085 6095 50 0000 L CNN 234 | F 1 "0,1u" H 6085 5945 50 0000 L CNN 235 | F 2 "Capacitors_SMD:C_0805_HandSoldering" H 6075 6025 50 0001 C CNN 236 | F 3 "" H 6075 6025 50 0000 C CNN 237 | 1 6075 6025 238 | 1 0 0 -1 239 | $EndComp 240 | $Comp 241 | L C_Small C5 242 | U 1 1 57B9BB47 243 | P 6325 6025 244 | F 0 "C5" H 6335 6095 50 0000 L CNN 245 | F 1 "470u" H 6335 5945 50 0000 L CNN 246 | F 2 "Capacitors_ThroughHole:C_Radial_D5_L11_P2.5" H 6325 6025 50 0001 C CNN 247 | F 3 "" H 6325 6025 50 0000 C CNN 248 | 1 6325 6025 249 | 1 0 0 -1 250 | $EndComp 251 | $Comp 252 | L +5V #PWR05 253 | U 1 1 57B9BDDA 254 | P 4825 5675 255 | F 0 "#PWR05" H 4825 5525 50 0001 C CNN 256 | F 1 "+5V" H 4825 5815 50 0000 C CNN 257 | F 2 "" H 4825 5675 50 0000 C CNN 258 | F 3 "" H 4825 5675 50 0000 C CNN 259 | 1 4825 5675 260 | 1 0 0 -1 261 | $EndComp 262 | $Comp 263 | L +3.3V #PWR06 264 | U 1 1 57B9BEEC 265 | P 6325 5675 266 | F 0 "#PWR06" H 6325 5525 50 0001 C CNN 267 | F 1 "+3.3V" H 6325 5815 50 0000 C CNN 268 | F 2 "" H 6325 5675 50 0000 C CNN 269 | F 3 "" H 6325 5675 50 0000 C CNN 270 | 1 6325 5675 271 | 1 0 0 -1 272 | $EndComp 273 | $Comp 274 | L JUMPER3 JP1 275 | U 1 1 57B9C69B 276 | P 3925 6025 277 | F 0 "JP1" H 3975 5925 50 0000 L CNN 278 | F 1 "Vcc_IO_SW" H 3925 6125 50 0000 C BNN 279 | F 2 "Pin_Headers:Pin_Header_Straight_1x03" H 3925 6025 50 0001 C CNN 280 | F 3 "" H 3925 6025 50 0000 C CNN 281 | 1 3925 6025 282 | 0 -1 -1 0 283 | $EndComp 284 | Text GLabel 4225 5825 1 39 Input ~ 0 285 | VCC_IO 286 | $Comp 287 | L +3.3V #PWR07 288 | U 1 1 57B9C833 289 | P 3925 5675 290 | F 0 "#PWR07" H 3925 5525 50 0001 C CNN 291 | F 1 "+3.3V" H 3925 5815 50 0000 C CNN 292 | F 2 "" H 3925 5675 50 0000 C CNN 293 | F 3 "" H 3925 5675 50 0000 C CNN 294 | 1 3925 5675 295 | 1 0 0 -1 296 | $EndComp 297 | $Comp 298 | L +5V #PWR08 299 | U 1 1 57B9C8B0 300 | P 3675 5675 301 | F 0 "#PWR08" H 3675 5525 50 0001 C CNN 302 | F 1 "+5V" H 3675 5815 50 0000 C CNN 303 | F 2 "" H 3675 5675 50 0000 C CNN 304 | F 3 "" H 3675 5675 50 0000 C CNN 305 | 1 3675 5675 306 | 1 0 0 -1 307 | $EndComp 308 | $Comp 309 | L C_Small C6 310 | U 1 1 57B9D5D9 311 | P 6875 5950 312 | F 0 "C6" H 6885 6020 50 0000 L CNN 313 | F 1 "100n" H 6885 5870 50 0000 L CNN 314 | F 2 "Capacitors_SMD:C_0805_HandSoldering" H 6875 5950 50 0001 C CNN 315 | F 3 "" H 6875 5950 50 0000 C CNN 316 | 1 6875 5950 317 | 1 0 0 -1 318 | $EndComp 319 | $Comp 320 | L C_Small C7 321 | U 1 1 57B9D64D 322 | P 7125 5950 323 | F 0 "C7" H 7135 6020 50 0000 L CNN 324 | F 1 "10n" H 7135 5870 50 0000 L CNN 325 | F 2 "Capacitors_SMD:C_0805_HandSoldering" H 7125 5950 50 0001 C CNN 326 | F 3 "" H 7125 5950 50 0000 C CNN 327 | 1 7125 5950 328 | 1 0 0 -1 329 | $EndComp 330 | $Comp 331 | L GND #PWR09 332 | U 1 1 57B9D7BE 333 | P 6875 6400 334 | F 0 "#PWR09" H 6875 6150 50 0001 C CNN 335 | F 1 "GND" H 6875 6250 50 0000 C CNN 336 | F 2 "" H 6875 6400 50 0000 C CNN 337 | F 3 "" H 6875 6400 50 0000 C CNN 338 | 1 6875 6400 339 | 1 0 0 -1 340 | $EndComp 341 | $Comp 342 | L R_Small R16 343 | U 1 1 57B9DB58 344 | P 8775 5800 345 | F 0 "R16" V 8675 5675 50 0000 L CNN 346 | F 1 "47,5k" V 8675 5850 50 0000 L CNN 347 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 8775 5800 50 0001 C CNN 348 | F 3 "" H 8775 5800 50 0000 C CNN 349 | 1 8775 5800 350 | 0 1 1 0 351 | $EndComp 352 | $Comp 353 | L R_Small R13 354 | U 1 1 57B9DBB5 355 | P 8575 5350 356 | F 0 "R13" H 8625 5400 50 0000 L CNN 357 | F 1 "1k" H 8625 5325 50 0000 L CNN 358 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 8575 5350 50 0001 C CNN 359 | F 3 "" H 8575 5350 50 0000 C CNN 360 | 1 8575 5350 361 | 1 0 0 -1 362 | $EndComp 363 | $Comp 364 | L R_Small R15 365 | U 1 1 57B9DBF8 366 | P 8775 5600 367 | F 0 "R15" V 8675 5475 50 0000 L CNN 368 | F 1 "10k" V 8675 5650 50 0000 L CNN 369 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 8775 5600 50 0001 C CNN 370 | F 3 "" H 8775 5600 50 0000 C CNN 371 | 1 8775 5600 372 | 0 1 1 0 373 | $EndComp 374 | $Comp 375 | L BC817-40 Q1 376 | U 1 1 57B9DC7C 377 | P 9275 5900 378 | F 0 "Q1" H 9475 5975 50 0000 L CNN 379 | F 1 "BC817" H 9475 5900 50 0000 L CNN 380 | F 2 "TO_SOT_Packages_SMD:SOT-23_Handsoldering" H 9475 5825 50 0001 L CIN 381 | F 3 "" H 9275 5900 50 0000 L CNN 382 | 1 9275 5900 383 | 1 0 0 -1 384 | $EndComp 385 | $Comp 386 | L R_Small R17 387 | U 1 1 57B9DE59 388 | P 9375 5500 389 | F 0 "R17" H 9405 5520 50 0000 L CNN 390 | F 1 "10k" H 9405 5460 50 0000 L CNN 391 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 9375 5500 50 0001 C CNN 392 | F 3 "" H 9375 5500 50 0000 C CNN 393 | 1 9375 5500 394 | 1 0 0 -1 395 | $EndComp 396 | $Comp 397 | L GND #PWR010 398 | U 1 1 57B9E591 399 | P 9375 6400 400 | F 0 "#PWR010" H 9375 6150 50 0001 C CNN 401 | F 1 "GND" H 9375 6250 50 0000 C CNN 402 | F 2 "" H 9375 6400 50 0000 C CNN 403 | F 3 "" H 9375 6400 50 0000 C CNN 404 | 1 9375 6400 405 | 1 0 0 -1 406 | $EndComp 407 | $Comp 408 | L +5V #PWR011 409 | U 1 1 57B9E6AF 410 | P 8575 5150 411 | F 0 "#PWR011" H 8575 5000 50 0001 C CNN 412 | F 1 "+5V" H 8575 5290 50 0000 C CNN 413 | F 2 "" H 8575 5150 50 0000 C CNN 414 | F 3 "" H 8575 5150 50 0000 C CNN 415 | 1 8575 5150 416 | 1 0 0 -1 417 | $EndComp 418 | $Comp 419 | L +5V #PWR012 420 | U 1 1 57B9E84B 421 | P 7425 5150 422 | F 0 "#PWR012" H 7425 5000 50 0001 C CNN 423 | F 1 "+5V" H 7425 5290 50 0000 C CNN 424 | F 2 "" H 7425 5150 50 0000 C CNN 425 | F 3 "" H 7425 5150 50 0000 C CNN 426 | 1 7425 5150 427 | 1 0 0 -1 428 | $EndComp 429 | Text GLabel 9375 5250 1 39 Input ~ 0 430 | VCC_IO 431 | Text GLabel 9675 5650 2 39 Input ~ 0 432 | WDT 433 | Text Notes 9100 1675 2 49 ~ 0 434 | AUD & BOOTMODE connector 435 | Text Notes 8800 3425 2 49 ~ 0 436 | SPI EEPROM connector 437 | Text Notes 8325 4850 2 49 ~ 0 438 | Watchdog generator 439 | Text Notes 5875 5275 2 49 ~ 0 440 | IO power supply 441 | Text Notes 4125 5275 2 49 ~ 0 442 | Vcc IO switch 443 | $Comp 444 | L GND #PWR013 445 | U 1 1 57BA107E 446 | P 8925 2850 447 | F 0 "#PWR013" H 8925 2600 50 0001 C CNN 448 | F 1 "GND" H 8925 2700 50 0000 C CNN 449 | F 2 "" H 8925 2850 50 0000 C CNN 450 | F 3 "" H 8925 2850 50 0000 C CNN 451 | 1 8925 2850 452 | 1 0 0 -1 453 | $EndComp 454 | Text GLabel 4550 1675 1 39 Input ~ 0 455 | VCC_IO 456 | $Comp 457 | L R_Small R1 458 | U 1 1 57BA14DF 459 | P 4550 2000 460 | F 0 "R1" H 4400 1950 50 0000 L CNN 461 | F 1 "5,6k" H 4350 1875 50 0000 L CNN 462 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 4550 2000 50 0001 C CNN 463 | F 3 "" H 4550 2000 50 0000 C CNN 464 | 1 4550 2000 465 | 1 0 0 -1 466 | $EndComp 467 | $Comp 468 | L R_Small R2 469 | U 1 1 57BA1542 470 | P 4775 2000 471 | F 0 "R2" H 4625 1950 50 0000 L CNN 472 | F 1 "5,6k" H 4600 1875 50 0000 L CNN 473 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 4775 2000 50 0001 C CNN 474 | F 3 "" H 4775 2000 50 0000 C CNN 475 | 1 4775 2000 476 | 1 0 0 -1 477 | $EndComp 478 | $Comp 479 | L R_Small R9 480 | U 1 1 57BA19FC 481 | P 5500 2725 482 | F 0 "R9" V 5425 2625 50 0000 L CNN 483 | F 1 "22" V 5425 2750 50 0000 L CNN 484 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 5500 2725 50 0001 C CNN 485 | F 3 "" H 5500 2725 50 0000 C CNN 486 | 1 5500 2725 487 | 0 1 1 0 488 | $EndComp 489 | $Comp 490 | L R_Small R4 491 | U 1 1 57BA1A61 492 | P 5225 2225 493 | F 0 "R4" V 5150 2125 50 0000 L CNN 494 | F 1 "22" V 5150 2250 50 0000 L CNN 495 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 5225 2225 50 0001 C CNN 496 | F 3 "" H 5225 2225 50 0000 C CNN 497 | 1 5225 2225 498 | 0 1 1 0 499 | $EndComp 500 | $Comp 501 | L R_Small R6 502 | U 1 1 57BA279F 503 | P 5225 2425 504 | F 0 "R6" V 5150 2325 50 0000 L CNN 505 | F 1 "22" V 5150 2450 50 0000 L CNN 506 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 5225 2425 50 0001 C CNN 507 | F 3 "" H 5225 2425 50 0000 C CNN 508 | 1 5225 2425 509 | 0 1 1 0 510 | $EndComp 511 | $Comp 512 | L R_Small R8 513 | U 1 1 57BA281D 514 | P 5225 2625 515 | F 0 "R8" V 5150 2525 50 0000 L CNN 516 | F 1 "22" V 5150 2650 50 0000 L CNN 517 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 5225 2625 50 0001 C CNN 518 | F 3 "" H 5225 2625 50 0000 C CNN 519 | 1 5225 2625 520 | 0 1 1 0 521 | $EndComp 522 | $Comp 523 | L R_Small R10 524 | U 1 1 57BA289A 525 | P 5225 2825 526 | F 0 "R10" V 5150 2725 50 0000 L CNN 527 | F 1 "22" V 5150 2875 50 0000 L CNN 528 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 5225 2825 50 0001 C CNN 529 | F 3 "" H 5225 2825 50 0000 C CNN 530 | 1 5225 2825 531 | 0 1 1 0 532 | $EndComp 533 | $Comp 534 | L R_Small R5 535 | U 1 1 57BA2A8A 536 | P 5500 2325 537 | F 0 "R5" V 5425 2225 50 0000 L CNN 538 | F 1 "22" V 5425 2350 50 0000 L CNN 539 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 5500 2325 50 0001 C CNN 540 | F 3 "" H 5500 2325 50 0000 C CNN 541 | 1 5500 2325 542 | 0 1 1 0 543 | $EndComp 544 | Text GLabel 9075 2450 2 39 Input ~ 0 545 | AUD_SYNC 546 | Text GLabel 7975 2450 0 39 Input ~ 0 547 | AUD_CK 548 | Text GLabel 9075 2350 2 39 Input ~ 0 549 | AUD_DATA3 550 | Text GLabel 7975 2350 0 39 Input ~ 0 551 | AUD_DATA2 552 | Text GLabel 7975 2550 0 39 Input ~ 0 553 | BOOT_TX 554 | Text GLabel 9075 2550 2 39 Input ~ 0 555 | BOOT_RX 556 | $Comp 557 | L R_Small R3 558 | U 1 1 57BA3976 559 | P 4975 2000 560 | F 0 "R3" H 4825 1950 50 0000 L CNN 561 | F 1 "5,6k" H 4800 1875 50 0000 L CNN 562 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 4975 2000 50 0001 C CNN 563 | F 3 "" H 4975 2000 50 0000 C CNN 564 | 1 4975 2000 565 | 1 0 0 -1 566 | $EndComp 567 | $Comp 568 | L R_Small R7 569 | U 1 1 57BA3CD1 570 | P 5500 2525 571 | F 0 "R7" V 5425 2425 50 0000 L CNN 572 | F 1 "22" V 5425 2600 50 0000 L CNN 573 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 5500 2525 50 0001 C CNN 574 | F 3 "" H 5500 2525 50 0000 C CNN 575 | 1 5500 2525 576 | 0 1 1 0 577 | $EndComp 578 | $Comp 579 | L R_Small R11 580 | U 1 1 57BA3F48 581 | P 5500 2925 582 | F 0 "R11" V 5425 2825 50 0000 L CNN 583 | F 1 "22" V 5425 3000 50 0000 L CNN 584 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 5500 2925 50 0001 C CNN 585 | F 3 "" H 5500 2925 50 0000 C CNN 586 | 1 5500 2925 587 | 0 1 1 0 588 | $EndComp 589 | Text GLabel 7975 2150 0 39 Input ~ 0 590 | AUD_RST 591 | Text GLabel 7975 2250 0 39 Input ~ 0 592 | AUD_DATA0 593 | Text GLabel 9075 2250 2 39 Input ~ 0 594 | AUD_DATA1 595 | Text GLabel 7975 2750 0 39 Input ~ 0 596 | WDT 597 | Text GLabel 2050 5375 2 39 Input ~ 0 598 | BOOT_TX 599 | Text GLabel 2050 5475 2 39 Input ~ 0 600 | BOOT_RX 601 | $Comp 602 | L R_Small R12 603 | U 1 1 57BA63F4 604 | P 7800 3950 605 | F 0 "R12" V 7875 3800 50 0000 L CNN 606 | F 1 "10k" V 7875 3975 50 0000 L CNN 607 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 7800 3950 50 0001 C CNN 608 | F 3 "" H 7800 3950 50 0000 C CNN 609 | 1 7800 3950 610 | 0 1 1 0 611 | $EndComp 612 | $Comp 613 | L R_Small R14 614 | U 1 1 57BA66A4 615 | P 8900 3850 616 | F 0 "R14" V 8750 3725 50 0000 L CNN 617 | F 1 "10k" V 8750 3900 50 0000 L CNN 618 | F 2 "Resistors_SMD:R_0805_HandSoldering" H 8900 3850 50 0001 C CNN 619 | F 3 "" H 8900 3850 50 0000 C CNN 620 | 1 8900 3850 621 | 0 1 1 0 622 | $EndComp 623 | Text GLabel 7575 3950 0 39 Input ~ 0 624 | VCC_IO 625 | Text GLabel 9150 3850 2 39 Input ~ 0 626 | VCC_IO 627 | $Comp 628 | L GND #PWR014 629 | U 1 1 57BA6D2C 630 | P 7975 4100 631 | F 0 "#PWR014" H 7975 3850 50 0001 C CNN 632 | F 1 "GND" H 7975 3950 50 0000 C CNN 633 | F 2 "" H 7975 4100 50 0000 C CNN 634 | F 3 "" H 7975 4100 50 0000 C CNN 635 | 1 7975 4100 636 | 1 0 0 -1 637 | $EndComp 638 | Text GLabel 7575 3850 0 39 Input ~ 0 639 | SPI_DO 640 | Text GLabel 7575 3750 0 39 Input ~ 0 641 | SPI_CS 642 | Text GLabel 9150 3950 2 39 Input ~ 0 643 | SPI_SCK 644 | Text GLabel 9150 4050 2 39 Input ~ 0 645 | SPI_DI 646 | $Comp 647 | L CONN_01X05 P2 648 | U 1 1 57BAE288 649 | P 6125 3425 650 | F 0 "P2" H 6125 3725 50 0000 C CNN 651 | F 1 "CONN_01X05" V 6225 3425 50 0000 C CNN 652 | F 2 "Pin_Headers:Pin_Header_Straight_1x05" H 6125 3425 50 0001 C CNN 653 | F 3 "" H 6125 3425 50 0000 C CNN 654 | 1 6125 3425 655 | 1 0 0 -1 656 | $EndComp 657 | Text GLabel 5750 3225 0 39 Input ~ 0 658 | CBUS1 659 | Text GLabel 5750 3325 0 39 Input ~ 0 660 | CBUS2 661 | Text GLabel 5750 3425 0 39 Input ~ 0 662 | CBUS3 663 | Text GLabel 5750 3525 0 39 Input ~ 0 664 | CBUS4 665 | Text GLabel 5750 3625 0 39 Input ~ 0 666 | CBUS5 667 | $Comp 668 | L GND #PWR015 669 | U 1 1 57BB184E 670 | P 3475 4200 671 | F 0 "#PWR015" H 3475 3950 50 0001 C CNN 672 | F 1 "GND" H 3475 4050 50 0000 C CNN 673 | F 2 "" H 3475 4200 50 0000 C CNN 674 | F 3 "" H 3475 4200 50 0000 C CNN 675 | 1 3475 4200 676 | 1 0 0 -1 677 | $EndComp 678 | $Comp 679 | L GND #PWR016 680 | U 1 1 57B9F072 681 | P 7975 6400 682 | F 0 "#PWR016" H 7975 6150 50 0001 C CNN 683 | F 1 "GND" H 7975 6250 50 0000 C CNN 684 | F 2 "" H 7975 6400 50 0000 C CNN 685 | F 3 "" H 7975 6400 50 0000 C CNN 686 | 1 7975 6400 687 | 1 0 0 -1 688 | $EndComp 689 | Text GLabel 7975 2050 0 39 Input ~ 0 690 | VCC_IO 691 | $Comp 692 | L GND #PWR017 693 | U 1 1 57BD73C6 694 | P 8075 2850 695 | F 0 "#PWR017" H 8075 2600 50 0001 C CNN 696 | F 1 "GND" H 8075 2700 50 0000 C CNN 697 | F 2 "" H 8075 2850 50 0000 C CNN 698 | F 3 "" H 8075 2850 50 0000 C CNN 699 | 1 8075 2850 700 | 1 0 0 -1 701 | $EndComp 702 | Wire Wire Line 703 | 1975 2525 2675 2525 704 | Wire Wire Line 705 | 1975 2625 2675 2625 706 | Wire Wire Line 707 | 2525 2725 1975 2725 708 | Wire Wire Line 709 | 2525 1625 2525 2725 710 | Wire Wire Line 711 | 3575 1625 3575 1925 712 | Wire Wire Line 713 | 1975 2325 2125 2325 714 | Wire Wire Line 715 | 2125 2225 2125 2925 716 | Connection ~ 2125 2325 717 | Wire Wire Line 718 | 2675 2225 2675 1925 719 | Wire Wire Line 720 | 2675 1925 2125 1925 721 | Wire Wire Line 722 | 2125 1925 2125 2025 723 | Wire Wire Line 724 | 3375 1925 3375 1675 725 | Wire Wire Line 726 | 4625 3625 4275 3625 727 | Wire Wire Line 728 | 4275 3525 4625 3525 729 | Wire Wire Line 730 | 4625 3425 4275 3425 731 | Wire Wire Line 732 | 4275 3325 4625 3325 733 | Wire Wire Line 734 | 4625 3225 4275 3225 735 | Wire Wire Line 736 | 4825 6125 4825 6275 737 | Wire Wire Line 738 | 4825 6275 6325 6275 739 | Wire Wire Line 740 | 6325 6275 6325 6125 741 | Wire Wire Line 742 | 6075 6125 6075 6275 743 | Connection ~ 6075 6275 744 | Wire Wire Line 745 | 5575 6175 5575 6375 746 | Connection ~ 5575 6275 747 | Wire Wire Line 748 | 5025 6125 5025 6275 749 | Connection ~ 5025 6275 750 | Wire Wire Line 751 | 4825 5875 5275 5875 752 | Wire Wire Line 753 | 5025 5875 5025 5925 754 | Wire Wire Line 755 | 4825 5675 4825 5925 756 | Connection ~ 5025 5875 757 | Wire Wire Line 758 | 5875 5875 6325 5875 759 | Wire Wire Line 760 | 6075 5875 6075 5925 761 | Wire Wire Line 762 | 6325 5675 6325 5925 763 | Connection ~ 6075 5875 764 | Connection ~ 4825 5875 765 | Connection ~ 6325 5875 766 | Wire Wire Line 767 | 3925 5775 3925 5675 768 | Wire Wire Line 769 | 3675 5675 3675 6275 770 | Wire Wire Line 771 | 3675 6275 3925 6275 772 | Wire Wire Line 773 | 4225 5825 4225 6025 774 | Wire Wire Line 775 | 4225 6025 4025 6025 776 | Wire Wire Line 777 | 6875 5600 7475 5600 778 | Wire Wire Line 779 | 6875 5600 6875 5850 780 | Wire Wire Line 781 | 7475 5800 7125 5800 782 | Wire Wire Line 783 | 7125 5800 7125 5850 784 | Wire Wire Line 785 | 6875 6050 6875 6400 786 | Wire Wire Line 787 | 7125 6050 7125 6150 788 | Wire Wire Line 789 | 7125 6150 6875 6150 790 | Connection ~ 6875 6150 791 | Wire Wire Line 792 | 8475 6000 8925 6000 793 | Wire Wire Line 794 | 8925 6300 7325 6300 795 | Wire Wire Line 796 | 7325 6300 7325 5600 797 | Connection ~ 7325 5600 798 | Wire Wire Line 799 | 8925 5800 8925 6300 800 | Wire Wire Line 801 | 8925 5800 8875 5800 802 | Wire Wire Line 803 | 8475 5800 8675 5800 804 | Connection ~ 8925 6000 805 | Wire Wire Line 806 | 8675 5600 8475 5600 807 | Wire Wire Line 808 | 8875 5600 9075 5600 809 | Wire Wire Line 810 | 9375 5600 9375 5700 811 | Wire Wire Line 812 | 9375 6400 9375 6100 813 | Wire Wire Line 814 | 8575 5800 8575 5450 815 | Connection ~ 8575 5800 816 | Wire Wire Line 817 | 8575 5250 8575 5150 818 | Wire Wire Line 819 | 7425 5150 7425 6000 820 | Wire Wire Line 821 | 7425 6000 7475 6000 822 | Wire Wire Line 823 | 9375 5400 9375 5250 824 | Wire Wire Line 825 | 9375 5650 9675 5650 826 | Connection ~ 9375 5650 827 | Wire Wire Line 828 | 9075 5600 9075 5900 829 | Wire Wire Line 830 | 8925 2050 8925 2850 831 | Wire Wire Line 832 | 8775 2050 8925 2050 833 | Wire Wire Line 834 | 7975 2050 8275 2050 835 | Wire Wire Line 836 | 7975 2150 8275 2150 837 | Wire Wire Line 838 | 7975 2550 8275 2550 839 | Wire Wire Line 840 | 7975 2350 8275 2350 841 | Wire Wire Line 842 | 7700 3950 7575 3950 843 | Wire Wire Line 844 | 9000 3850 9150 3850 845 | Wire Wire Line 846 | 8800 3850 8650 3850 847 | Wire Wire Line 848 | 7900 3950 8150 3950 849 | Wire Wire Line 850 | 8150 4050 7975 4050 851 | Wire Wire Line 852 | 7975 4050 7975 4100 853 | Wire Wire Line 854 | 7575 3850 8150 3850 855 | Wire Wire Line 856 | 8150 3750 7575 3750 857 | Wire Wire Line 858 | 9150 4050 8650 4050 859 | Wire Wire Line 860 | 8650 3950 9150 3950 861 | Wire Wire Line 862 | 8650 3750 9100 3750 863 | Wire Wire Line 864 | 9100 3750 9100 3850 865 | Connection ~ 9100 3850 866 | Wire Wire Line 867 | 5925 3225 5750 3225 868 | Wire Wire Line 869 | 5925 3325 5750 3325 870 | Wire Wire Line 871 | 5925 3425 5750 3425 872 | Wire Wire Line 873 | 5925 3525 5750 3525 874 | Wire Wire Line 875 | 5925 3625 5750 3625 876 | Wire Wire Line 877 | 2675 3625 2625 3625 878 | Wire Wire Line 879 | 2625 3625 2625 4175 880 | Wire Wire Line 881 | 2625 4175 3675 4175 882 | Wire Wire Line 883 | 3475 3925 3475 4200 884 | Connection ~ 3475 4175 885 | Wire Wire Line 886 | 3575 3925 3575 4175 887 | Connection ~ 3575 4175 888 | Wire Wire Line 889 | 3275 3925 3275 4175 890 | Connection ~ 3275 4175 891 | Wire Wire Line 892 | 7975 6200 7975 6400 893 | Wire Wire Line 894 | 7975 5300 7425 5300 895 | Connection ~ 7425 5300 896 | Wire Wire Line 897 | 7975 5400 7975 5300 898 | Wire Wire Line 899 | 3675 4175 3675 3925 900 | Wire Wire Line 901 | 4275 2225 5125 2225 902 | Wire Wire Line 903 | 4275 2325 5400 2325 904 | Wire Wire Line 905 | 4275 2425 5125 2425 906 | Wire Wire Line 907 | 4275 2525 5400 2525 908 | Wire Wire Line 909 | 4275 2625 5125 2625 910 | Wire Wire Line 911 | 4275 2725 5400 2725 912 | Wire Wire Line 913 | 4275 2825 5125 2825 914 | Wire Wire Line 915 | 4275 2925 5400 2925 916 | Wire Wire Line 917 | 1450 6250 2200 6250 918 | Wire Wire Line 919 | 1450 6350 2200 6350 920 | Wire Wire Line 921 | 1450 6450 2200 6450 922 | Wire Wire Line 923 | 1450 6550 2200 6550 924 | Wire Wire Line 925 | 1450 6650 2200 6650 926 | Wire Wire Line 927 | 1450 6750 2200 6750 928 | Wire Wire Line 929 | 1450 6850 2200 6850 930 | Wire Wire Line 931 | 4550 1675 4550 1900 932 | Wire Wire Line 933 | 4775 1900 4775 1800 934 | Wire Wire Line 935 | 4550 1800 4975 1800 936 | Connection ~ 4550 1800 937 | Wire Wire Line 938 | 4975 1800 4975 1900 939 | Connection ~ 4775 1800 940 | Wire Wire Line 941 | 2200 5975 2150 5975 942 | Wire Wire Line 943 | 2200 5875 2100 5875 944 | Wire Wire Line 945 | 2200 5775 2050 5775 946 | Wire Wire Line 947 | 1900 5475 1900 6250 948 | Connection ~ 1900 6250 949 | Wire Wire Line 950 | 2200 5675 2000 5675 951 | Wire Wire Line 952 | 1850 5375 1850 6150 953 | Connection ~ 1850 6150 954 | Wire Wire Line 955 | 1850 5375 2050 5375 956 | Wire Wire Line 957 | 1900 5475 2050 5475 958 | Wire Wire Line 959 | 7975 2250 8275 2250 960 | Wire Wire Line 961 | 8275 2450 7975 2450 962 | Wire Wire Line 963 | 8775 2250 9075 2250 964 | Wire Wire Line 965 | 8775 2350 9075 2350 966 | Wire Wire Line 967 | 9075 2450 8775 2450 968 | Wire Wire Line 969 | 8775 2550 9075 2550 970 | Wire Wire Line 971 | 8775 2875 8775 2750 972 | Wire Wire Line 973 | 8200 2875 8775 2875 974 | Wire Wire Line 975 | 8200 2875 8200 2750 976 | Wire Wire Line 977 | 7975 2750 8275 2750 978 | Connection ~ 8200 2750 979 | Wire Wire Line 980 | 8775 2650 8925 2650 981 | Connection ~ 8925 2650 982 | Wire Wire Line 983 | 8275 2650 8075 2650 984 | Wire Wire Line 985 | 8075 2650 8075 2850 986 | Wire Wire Line 987 | 2150 5975 2150 6550 988 | Connection ~ 2150 6550 989 | Wire Wire Line 990 | 2050 5775 2050 6150 991 | Wire Wire Line 992 | 2000 5675 2000 6750 993 | Connection ~ 2000 6750 994 | Wire Wire Line 995 | 2100 5875 2100 6450 996 | Connection ~ 2100 6450 997 | Wire Wire Line 998 | 4550 2100 4550 2825 999 | Connection ~ 4550 2825 1000 | Wire Wire Line 1001 | 4775 2100 4775 2625 1002 | Connection ~ 4775 2625 1003 | Wire Wire Line 1004 | 4975 2100 4975 2525 1005 | Connection ~ 4975 2525 1006 | Text GLabel 1450 6150 0 39 Input ~ 0 1007 | FTDI_DBUS0 1008 | Text GLabel 1450 6250 0 39 Input ~ 0 1009 | FTDI_DBUS1 1010 | Text GLabel 1450 6350 0 39 Input ~ 0 1011 | FTDI_DBUS2 1012 | Text GLabel 1450 6450 0 39 Input ~ 0 1013 | FTDI_DBUS3 1014 | Text GLabel 1450 6550 0 39 Input ~ 0 1015 | FTDI_DBUS4 1016 | Text GLabel 1450 6650 0 39 Input ~ 0 1017 | FTDI_DBUS5 1018 | Text GLabel 1450 6750 0 39 Input ~ 0 1019 | FTDI_DBUS6 1020 | Text GLabel 1450 6850 0 39 Input ~ 0 1021 | FTDI_DBUS7 1022 | Text Notes 1075 5075 0 49 ~ 0 1023 | Generic FTDI chip bitbang DBUS pins mapping 1024 | Text GLabel 6025 2525 2 39 Input ~ 0 1025 | AUD_SYNC 1026 | Text GLabel 6025 2825 2 39 Input ~ 0 1027 | AUD_CK 1028 | Text GLabel 6025 2725 2 39 Input ~ 0 1029 | AUD_DATA3 1030 | Text GLabel 6025 2925 2 39 Input ~ 0 1031 | AUD_DATA2 1032 | Text GLabel 6025 2325 2 39 Input ~ 0 1033 | AUD_DATA1 1034 | Text GLabel 6025 2425 2 39 Input ~ 0 1035 | AUD_DATA0 1036 | Text GLabel 6025 2625 2 39 Input ~ 0 1037 | AUD_RST 1038 | Text GLabel 6025 2050 2 39 Input ~ 0 1039 | SPI_CS 1040 | Text GLabel 6025 1950 2 39 Input ~ 0 1041 | SPI_DI 1042 | Text GLabel 6025 1850 2 39 Input ~ 0 1043 | SPI_DO 1044 | Text GLabel 6025 1750 2 39 Input ~ 0 1045 | SPI_SCK 1046 | Text GLabel 5875 1450 2 39 Input ~ 0 1047 | BOOT_TX 1048 | Text GLabel 5875 1550 2 39 Input ~ 0 1049 | BOOT_RX 1050 | Wire Wire Line 1051 | 6025 2050 5975 2050 1052 | Wire Wire Line 1053 | 6025 1950 5925 1950 1054 | Wire Wire Line 1055 | 6025 1850 5875 1850 1056 | Wire Wire Line 1057 | 5725 1550 5725 2325 1058 | Connection ~ 5725 2325 1059 | Wire Wire Line 1060 | 6025 1750 5825 1750 1061 | Wire Wire Line 1062 | 5675 1450 5675 2225 1063 | Connection ~ 5675 2225 1064 | Wire Wire Line 1065 | 5675 1450 5875 1450 1066 | Wire Wire Line 1067 | 5725 1550 5875 1550 1068 | Wire Wire Line 1069 | 5975 2050 5975 2625 1070 | Connection ~ 5975 2625 1071 | Wire Wire Line 1072 | 5875 1850 5875 2225 1073 | Wire Wire Line 1074 | 5825 1750 5825 2825 1075 | Connection ~ 5825 2825 1076 | Wire Wire Line 1077 | 5925 1950 5925 2525 1078 | Connection ~ 5925 2525 1079 | Wire Wire Line 1080 | 5600 2925 6025 2925 1081 | Wire Wire Line 1082 | 5325 2825 6025 2825 1083 | Wire Wire Line 1084 | 5600 2725 6025 2725 1085 | Wire Wire Line 1086 | 5325 2625 6025 2625 1087 | Wire Wire Line 1088 | 5600 2525 6025 2525 1089 | Wire Wire Line 1090 | 5325 2425 6025 2425 1091 | Wire Wire Line 1092 | 5600 2325 6025 2325 1093 | Wire Wire Line 1094 | 5875 2225 5325 2225 1095 | NoConn ~ 8775 2150 1096 | Wire Wire Line 1097 | 2050 6150 1450 6150 1098 | $EndSCHEMATC 1099 | -------------------------------------------------------------------------------- /hw/page_layout.kicad_wks: -------------------------------------------------------------------------------- 1 | (page_layout 2 | (setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15) 3 | (left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10)) 4 | (rect (name rect1:Rect) (start 0 0 ltcorner) (end 0 0) (repeat 2) (incrx 2) (incry 2)) 5 | (line (name segm1:Line) (start 50 2 ltcorner) (end 50 0 ltcorner) (repeat 30) (incrx 50)) 6 | (tbtext 1 (name text1:Text) (pos 25 1 ltcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) 7 | (line (name segm2:Line) (start 50 2 lbcorner) (end 50 0 lbcorner) (repeat 30) (incrx 50)) 8 | (tbtext 1 (name text2:Text) (pos 25 1 lbcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50)) 9 | (line (name segm3:Line) (start 0 50 ltcorner) (end 2 50 ltcorner) (repeat 30) (incry 50)) 10 | (tbtext A (name text3:Text) (pos 1 25 ltcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) 11 | (line (name segm4:Line) (start 0 50 rtcorner) (end 2 50 rtcorner) (repeat 30) (incry 50)) 12 | (tbtext A (name text4:Text) (pos 1 25 rtcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50)) 13 | (tbtext %Y (name text5:Text) (pos 109 20) (font bold)) 14 | (tbtext %C0 (name text6:Text) (pos 109 23)) 15 | (tbtext %C1 (name text7:Text) (pos 109 26)) 16 | (tbtext %C2 (name text8:Text) (pos 109 29)) 17 | (tbtext %C3 (name text9:Text) (pos 109 32)) 18 | ) 19 | --------------------------------------------------------------------------------