mirror of
https://github.com/eddyem/stm32samples.git
synced 2025-12-06 02:35:23 +03:00
fixed schematics @ canon managing, add initialization for absolute positioning, TODO: add CAN bus management
This commit is contained in:
parent
46c77abaed
commit
681f3253d7
@ -1,8 +1,8 @@
|
||||
BINARY := canonusb
|
||||
# MCU code
|
||||
MCU ?= F103x8
|
||||
MCU ?= F103x6
|
||||
# change this linking script depending on particular MCU model,
|
||||
LDSCRIPT ?= stm32f103x8.ld
|
||||
LDSCRIPT ?= stm32f103x6.ld
|
||||
DEFINES := -DSTM32F10X_LD
|
||||
|
||||
include ../makefile.f1
|
||||
|
||||
@ -1,9 +1,21 @@
|
||||
Canon lens management.
|
||||
# Canon lens management.
|
||||
|
||||
Management of some Canon Lens.
|
||||
|
||||
## Pinout
|
||||
|
||||
* PA4 - lens detect (zero active);
|
||||
* PA5,6,7 - SPI SCK, MISO, MOSI;
|
||||
* PA10 - USB DP pullup (zero active);
|
||||
* PA11,12 - USB DM, DP;
|
||||
* PA13,14 - SWD IO, CLK;
|
||||
* PB8,9 - CAN Rx,Tx;
|
||||
* PC13 - USB/CAN (solder jumper to turn on CAN instead of USB, zero - CAN).
|
||||
|
||||
Protocol have a string form, each string ends with '\n'. You should wait an answer for previous command before sending next,
|
||||
or have risk to miss all the rest commands in one packet.
|
||||
|
||||
USB commands:
|
||||
## USB commands:
|
||||
|
||||
0 - move to smallest foc value (e.g. 2.5m)
|
||||
1 - move to largest foc value (e.g. infinity)
|
||||
229
F1:F103/Canon_managing_device/can.c
Normal file
229
F1:F103/Canon_managing_device/can.c
Normal file
@ -0,0 +1,229 @@
|
||||
/*
|
||||
* This file is part of the canonmanage project.
|
||||
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "can.h"
|
||||
#include <stm32f1.h>
|
||||
|
||||
// REMAPPED to PB8/PB9!!!
|
||||
|
||||
#include <string.h> // memcpy
|
||||
|
||||
// circular buffer for received messages
|
||||
static CAN_message messages[CAN_INMESSAGE_SIZE];
|
||||
static uint8_t first_free_idx = 0; // index of first empty cell
|
||||
static int8_t first_nonfree_idx = -1; // index of first data cell
|
||||
static uint16_t oldspeed = 0, oldID = 0;
|
||||
|
||||
static void can_process_fifo(uint8_t fifo_num);
|
||||
|
||||
// push next message into buffer; return 1 if buffer overfull
|
||||
static int CAN_messagebuf_push(CAN_message *msg){
|
||||
if(first_free_idx == first_nonfree_idx){
|
||||
return 1; // no free space
|
||||
}
|
||||
if(first_nonfree_idx < 0) first_nonfree_idx = 0; // first message in empty buffer
|
||||
memcpy(&messages[first_free_idx++], msg, sizeof(CAN_message));
|
||||
// need to roll?
|
||||
if(first_free_idx == CAN_INMESSAGE_SIZE) first_free_idx = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// pop message from buffer
|
||||
CAN_message *CAN_messagebuf_pop(){
|
||||
if(first_nonfree_idx < 0) return NULL;
|
||||
CAN_message *msg = &messages[first_nonfree_idx++];
|
||||
if(first_nonfree_idx == CAN_INMESSAGE_SIZE) first_nonfree_idx = 0;
|
||||
if(first_nonfree_idx == first_free_idx){ // buffer is empty - refresh it
|
||||
first_nonfree_idx = -1;
|
||||
first_free_idx = 0;
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
// speed - in kbps, ID - identificator
|
||||
void CAN_setup(uint16_t speed, uint16_t ID){
|
||||
if(speed == 0) return; // didn't initialized yet
|
||||
if(speed < 25) speed = 25;
|
||||
else if(speed > 3000) speed = 3000;
|
||||
oldspeed = speed;
|
||||
oldID = ID;
|
||||
uint32_t tmout = 16000000;
|
||||
// Configure GPIO: PB8 - CAN_Rx, PB9 - CAN_Tx
|
||||
/* (1) Select AF mode (10) on PB8 and PB9 */
|
||||
/* (2) AF4 for CAN signals */
|
||||
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPBEN;
|
||||
AFIO->MAPR |= AFIO_MAPR_CAN_REMAP_REMAP2;
|
||||
GPIOB->CRH = 0;
|
||||
//pin_set(GPIOB, 1<<8);
|
||||
GPIOB->CRH = (GPIOB->CRH & ~(CRH(8,0xf)|CRH(9,0xf))) |
|
||||
CRH(8, CNF_FLINPUT | MODE_INPUT) | CRH(9, CNF_AFPP | MODE_NORMAL);
|
||||
/* Enable the peripheral clock CAN */
|
||||
RCC->APB1ENR |= RCC_APB1ENR_CAN1EN;
|
||||
CAN1->MCR |= CAN_MCR_INRQ;
|
||||
while((CAN1->MSR & CAN_MSR_INAK) != CAN_MSR_INAK)
|
||||
if(--tmout == 0) break;
|
||||
CAN1->MCR &=~ CAN_MCR_SLEEP;
|
||||
CAN1->MCR |= CAN_MCR_ABOM; /* allow automatically bus-off */
|
||||
|
||||
CAN1->BTR = 2 << 20 | 3 << 16 | (4500/speed - 1);
|
||||
CAN1->MCR &= ~CAN_MCR_INRQ;
|
||||
tmout = 16000000;
|
||||
while((CAN1->MSR & CAN_MSR_INAK) == CAN_MSR_INAK)
|
||||
if(--tmout == 0) break;
|
||||
// accept ALL
|
||||
CAN1->FMR = CAN_FMR_FINIT;
|
||||
CAN1->FM1R = CAN_FM1R_FBM0; // filter in list mode
|
||||
CAN1->FA1R = CAN_FA1R_FACT0; // activate filter0
|
||||
CAN1->sFilterRegister[0].FR1 = ID;
|
||||
CAN1->FFA1R = 1; // filter 0 for FIFO1
|
||||
CAN1->FMR &= ~CAN_FMR_FINIT; /* (12) */
|
||||
CAN1->IER |= CAN_IER_ERRIE | CAN_IER_FOVIE0 | CAN_IER_FOVIE1 | CAN_IER_BOFIE;
|
||||
|
||||
/* Configure IT */
|
||||
NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0); // RX FIFO0 IRQ
|
||||
NVIC_SetPriority(CAN1_RX1_IRQn, 0); // RX FIFO1 IRQ
|
||||
NVIC_SetPriority(CAN1_SCE_IRQn, 0); // RX status changed IRQ
|
||||
NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn);
|
||||
NVIC_EnableIRQ(CAN1_RX1_IRQn);
|
||||
NVIC_EnableIRQ(CAN1_SCE_IRQn);
|
||||
CAN1->MSR = 0; // clear SLAKI, WKUI, ERRI
|
||||
}
|
||||
|
||||
void can_proc(){
|
||||
// check for messages in FIFO0 & FIFO1
|
||||
if(CAN1->RF0R & CAN_RF0R_FMP0){
|
||||
can_process_fifo(0);
|
||||
}
|
||||
if(CAN1->RF1R & CAN_RF1R_FMP1){
|
||||
can_process_fifo(1);
|
||||
}
|
||||
IWDG->KR = IWDG_REFRESH;
|
||||
if(CAN1->ESR & (CAN_ESR_BOFF | CAN_ESR_EPVF | CAN_ESR_EWGF)){ // much errors - restart CAN BUS
|
||||
// request abort for all mailboxes
|
||||
CAN1->TSR |= CAN_TSR_ABRQ0 | CAN_TSR_ABRQ1 | CAN_TSR_ABRQ2;
|
||||
// reset CAN bus
|
||||
RCC->APB1RSTR |= RCC_APB1RSTR_CAN1RST;
|
||||
RCC->APB1RSTR &= ~RCC_APB1RSTR_CAN1RST;
|
||||
CAN_setup(oldspeed, oldID);
|
||||
}
|
||||
}
|
||||
|
||||
CAN_status can_send(uint8_t *msg, uint8_t len, uint16_t target_id){
|
||||
uint8_t mailbox = 0;
|
||||
// check first free mailbox
|
||||
if(CAN1->TSR & (CAN_TSR_TME)){
|
||||
mailbox = (CAN1->TSR & CAN_TSR_CODE) >> 24;
|
||||
}else{ // no free mailboxes
|
||||
return CAN_BUSY;
|
||||
}
|
||||
CAN_TxMailBox_TypeDef *box = &CAN1->sTxMailBox[mailbox];
|
||||
uint32_t lb = 0, hb = 0;
|
||||
switch(len){
|
||||
case 8:
|
||||
hb |= (uint32_t)msg[7] << 24;
|
||||
__attribute__((fallthrough));
|
||||
case 7:
|
||||
hb |= (uint32_t)msg[6] << 16;
|
||||
__attribute__((fallthrough));
|
||||
case 6:
|
||||
hb |= (uint32_t)msg[5] << 8;
|
||||
__attribute__((fallthrough));
|
||||
case 5:
|
||||
hb |= (uint32_t)msg[4];
|
||||
__attribute__((fallthrough));
|
||||
case 4:
|
||||
lb |= (uint32_t)msg[3] << 24;
|
||||
__attribute__((fallthrough));
|
||||
case 3:
|
||||
lb |= (uint32_t)msg[2] << 16;
|
||||
__attribute__((fallthrough));
|
||||
case 2:
|
||||
lb |= (uint32_t)msg[1] << 8;
|
||||
__attribute__((fallthrough));
|
||||
default:
|
||||
lb |= (uint32_t)msg[0];
|
||||
}
|
||||
box->TDLR = lb;
|
||||
box->TDHR = hb;
|
||||
box->TDTR = len;
|
||||
box->TIR = (target_id & 0x7FF) << 21 | CAN_TI0R_TXRQ;
|
||||
return CAN_OK;
|
||||
}
|
||||
|
||||
static void can_process_fifo(uint8_t fifo_num){
|
||||
if(fifo_num > 1) return;
|
||||
CAN_FIFOMailBox_TypeDef *box = &CAN1->sFIFOMailBox[fifo_num];
|
||||
volatile uint32_t *RFxR = (fifo_num) ? &CAN1->RF1R : &CAN1->RF0R;
|
||||
// read all
|
||||
while(*RFxR & CAN_RF0R_FMP0){ // amount of messages pending
|
||||
// CAN_RDTxR: (16-31) - timestamp, (8-15) - filter match index, (0-3) - data length
|
||||
/* TODO: check filter match index if more than one ID can receive */
|
||||
CAN_message msg;
|
||||
uint8_t *dat = msg.data;
|
||||
uint8_t len = box->RDTR & 0x0f;
|
||||
msg.length = len;
|
||||
msg.ID = box->RIR >> 21;
|
||||
if(len){ // message can be without data
|
||||
uint32_t hb = box->RDHR, lb = box->RDLR;
|
||||
switch(len){
|
||||
case 8:
|
||||
dat[7] = hb>>24;
|
||||
__attribute__((fallthrough));
|
||||
case 7:
|
||||
dat[6] = (hb>>16) & 0xff;
|
||||
__attribute__((fallthrough));
|
||||
case 6:
|
||||
dat[5] = (hb>>8) & 0xff;
|
||||
__attribute__((fallthrough));
|
||||
case 5:
|
||||
dat[4] = hb & 0xff;
|
||||
__attribute__((fallthrough));
|
||||
case 4:
|
||||
dat[3] = lb>>24;
|
||||
__attribute__((fallthrough));
|
||||
case 3:
|
||||
dat[2] = (lb>>16) & 0xff;
|
||||
__attribute__((fallthrough));
|
||||
case 2:
|
||||
dat[1] = (lb>>8) & 0xff;
|
||||
__attribute__((fallthrough));
|
||||
case 1:
|
||||
dat[0] = lb & 0xff;
|
||||
}
|
||||
}
|
||||
if(CAN_messagebuf_push(&msg)) return; // error: buffer is full, try later
|
||||
*RFxR |= CAN_RF0R_RFOM0; // release fifo for access to next message
|
||||
}
|
||||
*RFxR = 0; // clear FOVR & FULL
|
||||
}
|
||||
|
||||
void can_rx1_isr(){ // Rx FIFO1 (overrun)
|
||||
if(CAN1->RF1R & CAN_RF1R_FOVR1){
|
||||
CAN1->RF1R &= ~CAN_RF1R_FOVR1;
|
||||
}
|
||||
}
|
||||
|
||||
void can_sce_isr(){ // status changed
|
||||
if(CAN1->MSR & CAN_MSR_ERRI){ // Error
|
||||
CAN1->MSR &= ~CAN_MSR_ERRI;
|
||||
// request abort for problem mailbox
|
||||
if(CAN1->TSR & CAN_TSR_TERR0) CAN1->TSR |= CAN_TSR_ABRQ0;
|
||||
if(CAN1->TSR & CAN_TSR_TERR1) CAN1->TSR |= CAN_TSR_ABRQ1;
|
||||
if(CAN1->TSR & CAN_TSR_TERR2) CAN1->TSR |= CAN_TSR_ABRQ2;
|
||||
}
|
||||
}
|
||||
53
F1:F103/Canon_managing_device/can.h
Normal file
53
F1:F103/Canon_managing_device/can.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* This file is part of the canonmanage project.
|
||||
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// amount of filter banks in STM32F0
|
||||
#define STM32F0FBANKNO 28
|
||||
// flood period in milliseconds
|
||||
#define FLOOD_PERIOD_MS 5
|
||||
|
||||
// incoming message buffer size
|
||||
#define CAN_INMESSAGE_SIZE (8)
|
||||
extern uint32_t floodT;
|
||||
|
||||
// CAN message
|
||||
typedef struct{
|
||||
uint8_t data[8]; // up to 8 bytes of data
|
||||
uint8_t length; // data length
|
||||
uint16_t ID; // ID of receiver
|
||||
} CAN_message;
|
||||
|
||||
typedef enum{
|
||||
CAN_STOP,
|
||||
CAN_READY,
|
||||
CAN_BUSY,
|
||||
CAN_OK,
|
||||
CAN_ERR,
|
||||
CAN_FIFO_OVERRUN
|
||||
} CAN_status;
|
||||
|
||||
void CAN_setup(uint16_t speed, uint16_t ID);
|
||||
|
||||
CAN_status can_send(uint8_t *msg, uint8_t len, uint16_t target_id);
|
||||
void can_proc();
|
||||
|
||||
CAN_message *CAN_messagebuf_pop();
|
||||
@ -17,6 +17,7 @@
|
||||
*/
|
||||
|
||||
#include "canon.h"
|
||||
#include "flash.h"
|
||||
#include "hardware.h"
|
||||
#include "proto.h"
|
||||
#include "spi.h"
|
||||
@ -24,6 +25,12 @@
|
||||
|
||||
#define CU(a) ((const uint8_t*)a)
|
||||
|
||||
// common state machine, init state machine
|
||||
static lens_state state = LENS_DISCONNECTED;
|
||||
static lensinit_state inistate = INI_ERR;
|
||||
// Freal = F - Fdelta, F - F counts, Fdelta - F@0; Forig - when F was @ start; Fmax is F@1
|
||||
static uint16_t Fdelta = 0, Forig = BADFOCVAL, Fmax = BADFOCVAL;
|
||||
|
||||
#if 0
|
||||
typedef struct{
|
||||
canon_commands cmd; // command code
|
||||
@ -51,113 +58,271 @@ static command commands[] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
// command buffer (buf[0] == last command sent)
|
||||
static uint8_t buf[SPIBUFSZ] = {0}, ready = 0;
|
||||
// command buffer
|
||||
static uint8_t buf[MAXCMDLEN] = {0}, ready = 0;
|
||||
|
||||
static void canon_read(uint8_t cmd, uint8_t zeroz){
|
||||
if(zeroz > MAXCMDLEN - 1) return;
|
||||
// return 1 if Tms - T0 < MOVING_PAUSE
|
||||
static int waitstill(uint32_t T0){
|
||||
if(Tms - T0 < MOVING_PAUSE) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief canon_read - read some data
|
||||
* @param cmd
|
||||
* @param zeroz
|
||||
* @return
|
||||
*/
|
||||
static int canon_read(uint8_t cmd, uint8_t zeroz){
|
||||
if(zeroz > MAXCMDLEN - 1) return FALSE;
|
||||
++zeroz;
|
||||
*((uint32_t*)buf) = 0;
|
||||
for(int i = 0; i < MAXCMDLEN/4; ++i) ((uint32_t*)buf)[i] = 0;
|
||||
buf[0] = cmd;
|
||||
SPI_transmit(buf, zeroz);
|
||||
}/*
|
||||
if(SPI_transmit(buf, zeroz) != zeroz) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// get current F value
|
||||
static uint16_t getfocval(){
|
||||
if(!canon_read(CANON_GETDIAL, 2)) return BADFOCVAL;
|
||||
uint16_t F = (buf[1] << 8) | buf[2];
|
||||
return (F - Fdelta);
|
||||
}
|
||||
|
||||
typedef enum{
|
||||
F_MOVING,
|
||||
F_STOPPED,
|
||||
F_ERR
|
||||
} f_movstate;
|
||||
|
||||
// return F_STOPPED if current F differs from old; modify old
|
||||
static f_movstate Fstopped(uint16_t *oldF){
|
||||
uint16_t f = getfocval();
|
||||
#ifdef EBUG
|
||||
USB_send("Curpos="); USB_send(u2str(f)); USB_send("\n");
|
||||
#endif
|
||||
if(BADFOCVAL == f) return F_ERR;
|
||||
if(*oldF == f){
|
||||
DBG("F stopped");
|
||||
return F_STOPPED;
|
||||
}
|
||||
*oldF = f;
|
||||
return F_MOVING;
|
||||
}
|
||||
|
||||
/*
|
||||
static void canon_writeu8(uint8_t cmd, uint8_t u){
|
||||
*((uint32_t*)buf) = 0;
|
||||
buf[0] = cmd; buf[1] = u;
|
||||
SPI_transmit(buf, 2);
|
||||
}*/
|
||||
static void canon_writeu16(uint8_t cmd, uint16_t u){
|
||||
static int canon_writeu16(uint8_t cmd, uint16_t u){
|
||||
*((uint32_t*)buf) = 0;
|
||||
buf[0] = cmd; buf[1] = u >> 8; buf[2] = u & 0xff;
|
||||
SPI_transmit(buf, 3);
|
||||
if(3 != SPI_transmit(buf, 3)) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void canon_poll(){
|
||||
DBG("CANON_POLL");
|
||||
ready = 0;
|
||||
canon_read(CANON_POLL, 0);
|
||||
// wait no more than 1s
|
||||
uint32_t Tstart = Tms;
|
||||
while(Tms - Tstart < 1000){
|
||||
IWDG->KR = IWDG_REFRESH;
|
||||
if(!canon_read(CANON_POLL, 1)){
|
||||
continue;
|
||||
}
|
||||
if(buf[1] == CANON_POLLANS){// && canon_read(CANON_LONGID, 0)){
|
||||
ready = 1;
|
||||
DBG("Ready!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
// set state to error
|
||||
DBG("Not poll answer or no 0\n");
|
||||
state = LENS_ERR;
|
||||
}
|
||||
|
||||
// turn on power and send ack
|
||||
void canon_init(){
|
||||
ready = 0;
|
||||
canon_read(CANON_ID, 31);
|
||||
}
|
||||
|
||||
// send over USB 16-bit unsigned
|
||||
static void printu16(uint8_t *b){
|
||||
USB_send(u2str((b[1] << 8) | b[2]));
|
||||
inistate = INI_ERR;
|
||||
state = LENS_ERR;
|
||||
if(!canon_read(CANON_ID, 31)){
|
||||
DBG("Can't read ID\n");
|
||||
return;
|
||||
}
|
||||
DBG("turn on power\n");
|
||||
if(!canon_read(CANON_POWERON, 1)){
|
||||
DBG("OOps\n");
|
||||
return;
|
||||
}
|
||||
canon_poll();
|
||||
if(ready){
|
||||
inistate = INI_START;
|
||||
state = LENS_INITIALIZED;
|
||||
Fdelta = 0; Forig = BADFOCVAL; Fmax = BADFOCVAL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief canon_proc - check incoming SPI messages
|
||||
*/
|
||||
void canon_proc(){
|
||||
uint8_t lastcmd = buf[0]; // last command sent
|
||||
uint32_t uval;
|
||||
uint8_t x;
|
||||
uint8_t *rbuf = SPI_receive(&x);
|
||||
if(!rbuf) return;
|
||||
#ifdef EBUG
|
||||
//if(lastcmd != CANON_POLL){
|
||||
USB_send("SPI receive: ");
|
||||
for(uint8_t i = 0; i < x; ++i){
|
||||
if(i) USB_send(", ");
|
||||
USB_send(u2hexstr(rbuf[i]));
|
||||
static uint32_t Tconn = 0;
|
||||
if(state == LENS_DISCONNECTED){
|
||||
if(!LENSCONNECTED()){
|
||||
Tconn = 0;
|
||||
return;
|
||||
}
|
||||
USB_send("\n");
|
||||
//}
|
||||
#endif
|
||||
int need2poll = 0;
|
||||
switch (lastcmd){
|
||||
case CANON_LONGID: // something
|
||||
// need2poll = 0;
|
||||
break;
|
||||
case CANON_ID: // got ID -> turn on power
|
||||
canon_read(CANON_POWERON, 1);
|
||||
break;
|
||||
/*case CANON_POWERON:
|
||||
;
|
||||
break;*/
|
||||
case CANON_POLL:
|
||||
if(rbuf[0] == CANON_POLLANS){
|
||||
canon_read(CANON_LONGID, 0);
|
||||
ready = 1;
|
||||
#ifdef EBUG
|
||||
USB_send("Ready!\n");
|
||||
#endif
|
||||
}else need2poll = 1;
|
||||
break;
|
||||
case CANON_GETINFO:
|
||||
USB_send("Info="); for(int i = 1; i < 7; ++i){
|
||||
USB_send(u2hexstr(rbuf[i])); USB_send(" ");
|
||||
if(0 == Tconn){ // just connected
|
||||
DBG("Lens connected");
|
||||
Tconn = Tms ? Tms : 1;
|
||||
return;
|
||||
}
|
||||
if(Tms - Tconn < CONN_TIMEOUT) return;
|
||||
DBG("Connection timeout left, all OK");
|
||||
LENS_ON();
|
||||
if(the_conf.autoinit){
|
||||
canon_init();
|
||||
}else{
|
||||
state = LENS_SLEEPING; // wait until init
|
||||
ready = 1; // emulate ready flag for manual operations
|
||||
}
|
||||
return;
|
||||
}
|
||||
uint8_t OC = OVERCURRENT();
|
||||
if(!LENSCONNECTED() || OC){
|
||||
DBG("Disconnect or overcurrent");
|
||||
state = OC ? LENS_OVERCURRENT : LENS_DISCONNECTED;
|
||||
LENS_OFF();
|
||||
Tconn = 0;
|
||||
return;
|
||||
}
|
||||
if(state == LENS_ERR){
|
||||
if(0 == Tconn){
|
||||
DBG("Wait 5s till next recinit");
|
||||
Tconn = Tms ? Tms : 1;
|
||||
return;
|
||||
}
|
||||
if(Tms - Tconn < REINIT_PAUSE){
|
||||
DBG("5s left, try to reinit");
|
||||
Tconn = 0;
|
||||
canon_init();
|
||||
}
|
||||
}
|
||||
if(state != LENS_INITIALIZED) return;
|
||||
// initializing procedure: goto zero, check zeropoint and go back
|
||||
static uint8_t errctr = 0;
|
||||
if(errctr > 8){
|
||||
errctr = 0;
|
||||
inistate = INI_ERR;
|
||||
}
|
||||
static uint16_t oldF = BADFOCVAL; // old focus value (need to know that lens dont moving now)
|
||||
switch(inistate){
|
||||
case INI_START:
|
||||
DBG("INI_START");
|
||||
if(Forig != BADFOCVAL){
|
||||
if(canon_sendcmd(CANON_FMIN)){
|
||||
++errctr;
|
||||
return;
|
||||
}
|
||||
inistate = INI_FGOTOZ;
|
||||
oldF = Forig;
|
||||
errctr = 0;
|
||||
Tconn = Tms;
|
||||
}else{
|
||||
Forig = getfocval(); // Fdelta == 0 -> Forig now is pure F counts
|
||||
++errctr;
|
||||
}
|
||||
USB_send("\n");
|
||||
break;
|
||||
case CANON_GETREG:
|
||||
USB_send("Reg="); USB_send(u2hexstr((rbuf[1] << 8) | rbuf[2])); USB_send("\n");
|
||||
case INI_FGOTOZ: // wait until F changes stopped
|
||||
if(waitstill(Tconn)) return; // timeout
|
||||
DBG("INI_FGOTOZ");
|
||||
switch(Fstopped(&oldF)){
|
||||
case F_STOPPED:
|
||||
Fdelta = oldF; // F@0
|
||||
Forig -= oldF; // F in counts from 0
|
||||
inistate = INI_FPREPMAX;
|
||||
errctr = 0;
|
||||
break;
|
||||
case F_ERR:
|
||||
++errctr;
|
||||
break;
|
||||
default: // moving
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case CANON_GETMODEL:
|
||||
USB_send("Lens="); printu16(rbuf); USB_send("\n");
|
||||
case INI_FPREPMAX:
|
||||
DBG("INI_FPREPMAX");
|
||||
if(canon_sendcmd(CANON_FMAX)){
|
||||
++errctr;
|
||||
return;
|
||||
}
|
||||
inistate = INI_FGOTOMAX;
|
||||
errctr = 0;
|
||||
Tconn = Tms;
|
||||
break;
|
||||
case CANON_GETDIAL:
|
||||
USB_send("Fsteps="); printu16(rbuf); USB_send("\n");
|
||||
//canon_read(CANON_GETFOCM, 4);
|
||||
case INI_FGOTOMAX:
|
||||
if(waitstill(Tconn)) return;
|
||||
DBG("INI_FGOTOMAX");
|
||||
switch(Fstopped(&oldF)){
|
||||
case F_STOPPED:
|
||||
Fmax = oldF;
|
||||
inistate = INI_FPREPOLD;
|
||||
errctr = 0;
|
||||
break;
|
||||
case F_ERR:
|
||||
++errctr;
|
||||
break;
|
||||
default: // moving
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case INI_FPREPOLD:
|
||||
DBG("INI_FPREPOLD");
|
||||
if(!canon_writeu16(CANON_FOCMOVE, Forig - Fmax)){
|
||||
++errctr;
|
||||
}else{
|
||||
errctr = 0;
|
||||
inistate = INI_FGOTOOLD;
|
||||
Tconn = Tms;
|
||||
}
|
||||
break;
|
||||
case INI_FGOTOOLD:
|
||||
if(waitstill(Tconn)) return;
|
||||
DBG("INI_FGOTOOLD");
|
||||
switch(Fstopped(&oldF)){
|
||||
case F_STOPPED:
|
||||
DBG("ON position");
|
||||
inistate = INI_READY;
|
||||
state = LENS_READY;
|
||||
errctr = 0;
|
||||
break;
|
||||
case F_ERR:
|
||||
++errctr;
|
||||
break;
|
||||
default: // moving
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default: // some error - change lens state to `ready` despite of errini
|
||||
DBG("ERROR in initialization -> ready without ini");
|
||||
state = LENS_READY;
|
||||
}
|
||||
/*
|
||||
case CANON_GETFOCM: // don't work @EF200
|
||||
uval = (rbuf[1] << 24) | (rbuf[2] << 16) | (rbuf[3] << 8) | rbuf[4];
|
||||
USB_send("Fval="); USB_send(u2str(uval)); USB_send("\n");
|
||||
break;
|
||||
default:
|
||||
need2poll = 1; // poll after any other command
|
||||
break;
|
||||
}
|
||||
if(need2poll) canon_poll();
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief canon_diaphragm - run comands
|
||||
* @param command: open/close diaphragm by 1 step (+/-), open/close fully (o/c)
|
||||
* @return 0 if success or error code (1 - not ready, 2 - bad command)
|
||||
* @return 0 if success or error code (1 - not ready, 2 - bad command, 3 - can't send data)
|
||||
*/
|
||||
int canon_diaphragm(char command){
|
||||
if(!ready) return 1;
|
||||
@ -180,36 +345,58 @@ int canon_diaphragm(char command){
|
||||
default:
|
||||
return 2; // unknown command
|
||||
}
|
||||
canon_writeu16(CANON_DIAPHRAGM, (uint16_t)(val << 8));
|
||||
if(!canon_writeu16(CANON_DIAPHRAGM, (uint16_t)(val << 8))) return 3;
|
||||
canon_poll();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int canon_focus(int16_t val){
|
||||
if(!ready) return 1;
|
||||
if(val == 0) canon_read(CANON_GETDIAL, 2);
|
||||
else canon_writeu16(CANON_FOCMOVE, val);
|
||||
if(val < 0){
|
||||
USB_send("Fsteps="); USB_send(u2str(getfocval())); USB_send("\n");
|
||||
}else{
|
||||
if(val > Fmax){
|
||||
USB_send("Fmax="); USB_send(u2str(Fmax)); USB_send("\n");
|
||||
return 2;
|
||||
}
|
||||
uint16_t curF = getfocval();
|
||||
if(curF == BADFOCVAL){
|
||||
DBG("Unknown current F");
|
||||
return 1;
|
||||
}
|
||||
val -= curF;
|
||||
if(!canon_writeu16(CANON_FOCMOVE, val)) return 1;
|
||||
}
|
||||
canon_poll();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int canon_sendcmd(uint8_t cmd){
|
||||
if(!ready) return 1;
|
||||
canon_read(cmd, 0);
|
||||
if(!ready || !canon_read(cmd, 0)) return 1;
|
||||
canon_poll();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void canon_setlastcmd(uint8_t x){
|
||||
buf[0] = x;
|
||||
}
|
||||
|
||||
// acquire 16bit value
|
||||
int canon_asku16(uint8_t cmd){
|
||||
if(!ready) return 1;
|
||||
canon_read(cmd, 2);
|
||||
if(!ready || !canon_read(cmd, 3)) return 1;
|
||||
USB_send("par=");
|
||||
USB_send(u2str((buf[1] << 8) | buf[2]));
|
||||
USB_send("\n");
|
||||
canon_poll();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int canon_getinfo(){
|
||||
if(!ready) return 1;
|
||||
canon_read(CANON_GETINFO, 6);
|
||||
if(!ready || !canon_read(CANON_GETINFO, 6)) return 1;
|
||||
USB_send("Info="); for(int i = 1; i < 7; ++i){
|
||||
USB_send(u2hexstr(buf[i])); USB_send(" ");
|
||||
}
|
||||
canon_poll();
|
||||
USB_send("\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t canon_getstate(){
|
||||
return state | (inistate << 8);
|
||||
}
|
||||
|
||||
@ -22,12 +22,26 @@
|
||||
|
||||
// all data sent in big-endian format
|
||||
|
||||
// max length of commands
|
||||
// max length of commands buffer
|
||||
#define MAXCMDLEN (32)
|
||||
|
||||
// connection timeout (100ms): do nothing until this timeout
|
||||
#define CONN_TIMEOUT (100)
|
||||
|
||||
// pause after error before next reinit
|
||||
#define REINIT_PAUSE (5000)
|
||||
|
||||
// waiting for starting moving - 0.25s
|
||||
#define MOVING_PAUSE (250)
|
||||
|
||||
// answer for cmd "POLL"
|
||||
#define CANON_POLLANS (0xaa)
|
||||
|
||||
// bad focus value - 32767
|
||||
#define BADFOCVAL (0x7fff)
|
||||
|
||||
// maximal
|
||||
|
||||
typedef enum{
|
||||
CANON_LONGID = 0x00, // long ID ???
|
||||
CANON_ID = 0x01, // lens ID and other info ???
|
||||
@ -37,7 +51,7 @@ typedef enum{
|
||||
CANON_FMIN = 0x06, // =//= min
|
||||
CANON_POWERON = 0x07, // turn on motors' power
|
||||
CANON_POWEROFF = 0x08, // turn off power
|
||||
CANON_POLL = 0x0a, // bysu poll (ans 0xaa when ready or last command code)
|
||||
CANON_POLL = 0x0a, // busy poll (ans 0xaa when ready or last command code)
|
||||
CANON_DIAPHRAGM = 0x13, // open/close diaphragm by given (int8_t) value of steps
|
||||
CANON_FOCMOVE = 0x44, // move focus dial by given amount of steps (int16)
|
||||
CANON_FOCBYHANDS= 0x5e, // turn on focus move by hands (to turn off send 4,5 or 6)
|
||||
@ -48,11 +62,33 @@ typedef enum{
|
||||
CANON_GETFOCM = 0xc2, // get focus position in meters (not for all lenses)
|
||||
} canon_commands;
|
||||
|
||||
typedef enum{
|
||||
LENS_DISCONNECTED, // no lens found
|
||||
LENS_SLEEPING, // do nothing until init
|
||||
LENS_OVERCURRENT, // short circuit
|
||||
LENS_INITIALIZED, // initializing process
|
||||
LENS_READY, // ready to operate
|
||||
LENS_ERR, // some error occured - reconnect after REINIT_PAUSE
|
||||
LENS_S_AMOUNT
|
||||
} lens_state;
|
||||
|
||||
typedef enum{
|
||||
INI_START, // base init done, start F initialization
|
||||
INI_FGOTOZ, // wait until focus gone to minimal value
|
||||
INI_FPREPMAX, // prepare to go to max
|
||||
INI_FGOTOMAX, // go to max F value
|
||||
INI_FPREPOLD, // prepare to go to old
|
||||
INI_FGOTOOLD, // go to starting F value
|
||||
INI_READY, // all OK
|
||||
INI_ERR, // error on any init step
|
||||
INI_S_AMOUNT
|
||||
} lensinit_state;
|
||||
|
||||
void canon_init();
|
||||
void canon_proc();
|
||||
int canon_diaphragm(char command);
|
||||
int canon_focus(int16_t val);
|
||||
int canon_sendcmd(uint8_t cmd);
|
||||
int canon_asku16(uint8_t cmd);
|
||||
void canon_setlastcmd(uint8_t x);
|
||||
int canon_getinfo();
|
||||
uint16_t canon_getstate();
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
can.c
|
||||
can.h
|
||||
canon.c
|
||||
canon.h
|
||||
flash.c
|
||||
flash.h
|
||||
hardware.c
|
||||
hardware.h
|
||||
main.c
|
||||
|
||||
Binary file not shown.
220
F1:F103/Canon_managing_device/flash.c
Normal file
220
F1:F103/Canon_managing_device/flash.c
Normal file
@ -0,0 +1,220 @@
|
||||
/*
|
||||
* geany_encoding=koi8-r
|
||||
* flash.c
|
||||
*
|
||||
* Copyright 2017 Edward V. Emelianov <eddy@sao.ru, edward.emelianoff@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "stm32f1.h"
|
||||
|
||||
#include "flash.h"
|
||||
#include "proto.h"
|
||||
#include "usb.h" // printout
|
||||
#include <string.h> // memcpy
|
||||
|
||||
extern const uint32_t __varsstart, _BLOCKSIZE;
|
||||
static const uint32_t FLASH_blocksize = (uint32_t)&_BLOCKSIZE;
|
||||
static uint32_t maxCnum = 1024 / sizeof(user_conf); // can't use blocksize here
|
||||
|
||||
// common structure for all datatypes stored
|
||||
/*typedef struct {
|
||||
uint16_t userconf_sz;
|
||||
} flash_storage;*/
|
||||
|
||||
#define USERCONF_INITIALIZER { \
|
||||
.userconf_sz = sizeof(user_conf) \
|
||||
,.canspeed = 250 \
|
||||
,.canID = 0xAA \
|
||||
}
|
||||
|
||||
static int write2flash(const void*, const void*, uint32_t);
|
||||
const user_conf *Flash_Data = (const user_conf *)(&__varsstart);
|
||||
user_conf the_conf = USERCONF_INITIALIZER;
|
||||
|
||||
static int currentconfidx = -1; // index of current configuration
|
||||
|
||||
/**
|
||||
* @brief binarySearch - binary search in flash for last non-empty cell
|
||||
* any struct searched should have its sizeof() @ the first field!!!
|
||||
* @param l - left index
|
||||
* @param r - right index (should be @1 less than last index!)
|
||||
* @param start - starting address
|
||||
* @param stor_size - size of structure to search
|
||||
* @return index of non-empty cell or -1
|
||||
*/
|
||||
static int binarySearch(int r, const uint8_t *start, int stor_size){
|
||||
int l = 0;
|
||||
while(r >= l){
|
||||
int mid = l + (r - l) / 2;
|
||||
#ifdef EBUG
|
||||
USB_send("mid/l/r=");
|
||||
USB_send(u2str(mid)); USB_send("/");
|
||||
USB_send(u2str(l)); USB_send("/");
|
||||
USB_send(u2str(r)); USB_send("/");
|
||||
USB_send("\n");
|
||||
#endif
|
||||
const uint8_t *s = start + mid * stor_size;
|
||||
if(*((const uint16_t*)s) == stor_size){
|
||||
if(*((const uint16_t*)(s + stor_size)) == 0xffff){ // next is free
|
||||
return mid;
|
||||
}else{ // element is to the right
|
||||
l = mid + 1;
|
||||
}
|
||||
}else{ // element is to the left
|
||||
r = mid - 1;
|
||||
}
|
||||
}
|
||||
return -1; // not found
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief flashstorage_init - initialization of user conf storage
|
||||
* run in once @ start
|
||||
*/
|
||||
void flashstorage_init(){
|
||||
if(FLASH_SIZE > 0 && FLASH_SIZE < 20000){
|
||||
uint32_t flsz = FLASH_SIZE * 1024; // size in bytes
|
||||
flsz -= (uint32_t)(&__varsstart) - FLASH_BASE;
|
||||
maxCnum = flsz / sizeof(user_conf);
|
||||
}
|
||||
#ifdef EBUG
|
||||
USB_send("INIT\n");
|
||||
#endif
|
||||
// -1 if there's no data at all & flash is clear; maxnum-1 if flash is full
|
||||
currentconfidx = binarySearch((int)maxCnum-2, (const uint8_t*)Flash_Data, sizeof(user_conf));
|
||||
if(currentconfidx > -1){
|
||||
memcpy(&the_conf, &Flash_Data[currentconfidx], sizeof(user_conf));
|
||||
}
|
||||
#ifdef EBUG
|
||||
USB_send("currentconfidx="); USB_send(u2str(currentconfidx)); USB_send("\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
// store new configuration
|
||||
// @return 0 if all OK
|
||||
int store_userconf(){
|
||||
// maxnum - 3 means that there always should be at least one empty record after last data
|
||||
// for binarySearch() checking that there's nothing more after it!
|
||||
if(currentconfidx > (int)maxCnum - 3){ // there's no more place
|
||||
currentconfidx = 0;
|
||||
if(erase_storage(-1)) return 1;
|
||||
}else ++currentconfidx; // take next data position (0 - within first run after firmware flashing)
|
||||
return write2flash((const void*)&Flash_Data[currentconfidx], &the_conf, sizeof(the_conf));
|
||||
}
|
||||
|
||||
static int write2flash(const void *start, const void *wrdata, uint32_t stor_size){
|
||||
int ret = 0;
|
||||
if (FLASH->CR & FLASH_CR_LOCK){ // unloch flash
|
||||
FLASH->KEYR = FLASH_KEY1;
|
||||
FLASH->KEYR = FLASH_KEY2;
|
||||
}
|
||||
while (FLASH->SR & FLASH_SR_BSY) IWDG->KR = IWDG_REFRESH;
|
||||
FLASH->SR = FLASH_SR_EOP | FLASH_SR_PGERR | FLASH_SR_WRPRTERR; // clear all flags
|
||||
FLASH->CR |= FLASH_CR_PG;
|
||||
const uint16_t *data = (const uint16_t*) wrdata;
|
||||
volatile uint16_t *address = (volatile uint16_t*) start;
|
||||
uint32_t i, count = (stor_size + 1) / 2;
|
||||
for(i = 0; i < count; ++i){
|
||||
*(volatile uint16_t*)(address + i) = data[i];
|
||||
while(FLASH->SR & FLASH_SR_BSY) IWDG->KR = IWDG_REFRESH;
|
||||
if(*(volatile uint16_t*)(address + i) != data[i]){
|
||||
USB_send("DON'T MATCH!\n");
|
||||
ret = 1;
|
||||
break;
|
||||
}
|
||||
if(FLASH->SR & FLASH_SR_PGERR){
|
||||
USB_send("Prog err\n");
|
||||
ret = 1; // program error - meet not 0xffff
|
||||
break;
|
||||
}
|
||||
#ifdef EBUG
|
||||
USB_send(u2str(stor_size)); USB_send("bytes stored @0x");
|
||||
USB_send(u2hexstr((uint32_t)(address + i))); USB_send("\n");
|
||||
#endif
|
||||
FLASH->SR = FLASH_SR_EOP | FLASH_SR_PGERR | FLASH_SR_WRPRTERR;
|
||||
}
|
||||
FLASH->CR &= ~(FLASH_CR_PG);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// erase Nth page of flash storage (flash should be prepared!)
|
||||
static int erase_pageN(int N){
|
||||
int ret = 0;
|
||||
#ifdef EBUG
|
||||
USB_send("Erase page #"); USB_send(u2str(N)); USB_send("\n");
|
||||
#endif
|
||||
FLASH->AR = (uint32_t)Flash_Data + N*FLASH_blocksize;
|
||||
FLASH->CR |= FLASH_CR_STRT;
|
||||
while(FLASH->SR & FLASH_SR_BSY) IWDG->KR = IWDG_REFRESH;
|
||||
FLASH->SR = FLASH_SR_EOP;
|
||||
if(FLASH->SR & FLASH_SR_WRPRTERR){ /* Check Write protection error */
|
||||
ret = 1;
|
||||
FLASH->SR = FLASH_SR_WRPRTERR; /* Clear the flag by software by writing it at 1*/
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// erase full storage (npage < 0) or its nth page; @return 0 if all OK
|
||||
int erase_storage(int npage){
|
||||
int ret = 0;
|
||||
uint32_t end = 1, start = 0, flsz = 0;
|
||||
if(FLASH_SIZE > 0 && FLASH_SIZE < 20000){
|
||||
flsz = FLASH_SIZE * 1024; // size in bytes
|
||||
flsz -= (uint32_t)Flash_Data - FLASH_BASE;
|
||||
}
|
||||
end = flsz / FLASH_blocksize;
|
||||
#ifdef EBUG
|
||||
USB_send("FLASH_SIZE="); USB_send(u2str(FLASH_SIZE));
|
||||
USB_send("\nflsz="); USB_send(u2str(flsz));
|
||||
USB_send("\nend="); USB_send(u2str(end));
|
||||
USB_send("\ncurrentconfidx="); USB_send(u2str(currentconfidx));
|
||||
USB_send("\nmaxCnum="); USB_send(u2str(maxCnum));
|
||||
USB_send("\n");
|
||||
#endif
|
||||
if(end == 0 || end >= FLASH_SIZE) return 1;
|
||||
if(npage > -1){ // erase only one page
|
||||
if((uint32_t)npage >= end) return 1;
|
||||
start = npage;
|
||||
end = start + 1;
|
||||
}
|
||||
if((FLASH->CR & FLASH_CR_LOCK) != 0){
|
||||
FLASH->KEYR = FLASH_KEY1;
|
||||
FLASH->KEYR = FLASH_KEY2;
|
||||
}
|
||||
while(FLASH->SR & FLASH_SR_BSY) IWDG->KR = IWDG_REFRESH;
|
||||
FLASH->SR = FLASH_SR_EOP | FLASH_SR_PGERR | FLASH_SR_WRPRTERR;
|
||||
FLASH->CR |= FLASH_CR_PER;
|
||||
for(uint32_t i = start; i < end; ++i){
|
||||
if(erase_pageN(i)){
|
||||
ret = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
FLASH->CR &= ~FLASH_CR_PER;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void dump_userconf(){
|
||||
USB_send("userconf_sz="); printu(the_conf.userconf_sz);
|
||||
USB_send("\ncurrentconfidx="); USB_send(u2str(currentconfidx));
|
||||
USB_send("\nCAN_speed="); printu(the_conf.canspeed);
|
||||
USB_send("\nCAN_ID="); printu(the_conf.canID);
|
||||
USB_send("\nautoinit="); printu(the_conf.autoinit);
|
||||
USB_send("\n");
|
||||
}
|
||||
41
F1:F103/Canon_managing_device/flash.h
Normal file
41
F1:F103/Canon_managing_device/flash.h
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* This file is part of the canonmanage project.
|
||||
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stm32f1.h>
|
||||
|
||||
#define FLASH_SIZE_REG ((uint32_t)0x1FFFF7E0)
|
||||
#define FLASH_SIZE *((uint16_t*)FLASH_SIZE_REG)
|
||||
|
||||
/*
|
||||
* struct to save user configurations
|
||||
*/
|
||||
typedef struct __attribute__((packed, aligned(4))){
|
||||
uint16_t userconf_sz; // "magick number"
|
||||
uint16_t canspeed; // CAN bus speed
|
||||
uint16_t canID; // CAN bus device ID
|
||||
uint8_t autoinit; // == 1 for auto-initialization
|
||||
} user_conf;
|
||||
|
||||
extern user_conf the_conf;
|
||||
|
||||
void flashstorage_init();
|
||||
int store_userconf();
|
||||
int erase_storage(int npage);
|
||||
void dump_userconf();
|
||||
@ -18,22 +18,44 @@
|
||||
|
||||
#include "hardware.h"
|
||||
|
||||
static inline void gpio_setup(){
|
||||
#ifndef EBUG
|
||||
TRUE_INLINE void iwdg_setup(){
|
||||
uint32_t tmout = 16000000;
|
||||
RCC->CSR |= RCC_CSR_LSION;
|
||||
while((RCC->CSR & RCC_CSR_LSIRDY) != RCC_CSR_LSIRDY){if(--tmout == 0) break;} /* (2) */
|
||||
IWDG->KR = IWDG_START;
|
||||
IWDG->KR = IWDG_WRITE_ACCESS;
|
||||
IWDG->PR = IWDG_PR_PR_1;
|
||||
IWDG->RLR = 1250;
|
||||
tmout = 16000000;
|
||||
while(IWDG->SR){if(--tmout == 0) break;}
|
||||
IWDG->KR = IWDG_REFRESH;
|
||||
}
|
||||
#endif
|
||||
|
||||
// PA4 (L_Detect), PC13 (USB/CAN), PA9 (~OC) - pullup input
|
||||
// PA8 (Ven, high active), PA10 (USBPU, low active) - pushpull output
|
||||
|
||||
TRUE_INLINE void gpio_setup(){
|
||||
// Set APB2 clock to 72/4=18MHz
|
||||
RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PPRE2) | RCC_CFGR_PPRE2_DIV4;
|
||||
// Enable clocks to the GPIO subsystems, turn on AFIO clocking to disable SWD/JTAG
|
||||
RCC->APB2ENR = RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_AFIOEN;
|
||||
AFIO->MAPR = AFIO_MAPR_SWJ_CFG_JTAGDISABLE; // for PA15 - USB pullup
|
||||
// Set led as opendrain output
|
||||
GPIOC->CRH = CRH(13, CNF_ODOUTPUT | MODE_SLOW);
|
||||
// Enable clocks to the GPIO subsystems
|
||||
RCC->APB2ENR = RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPCEN;// | RCC_APB2ENR_AFIOEN;
|
||||
//AFIO->MAPR = AFIO_MAPR_SWJ_CFG_JTAGDISABLE; // for PA15 - USB pullup
|
||||
GPIOC->ODR = 1<<13; // pullup
|
||||
GPIOA->ODR = 1<<4 | 1<<9;
|
||||
GPIOC->CRH = CRH(13, CNF_PUDINPUT | MODE_INPUT);
|
||||
// setup SPI GPIO - alternate function PP (PA5 - SCK, PA6 - MISO, PA7 - MOSI)
|
||||
GPIOA->CRL = CRL(5, CNF_AFPP|MODE_FAST) | CRL(6, CNF_FLINPUT) | CRL(7, CNF_AFPP|MODE_FAST);
|
||||
GPIOA->CRL = CRL(4, CNF_PUDINPUT | MODE_INPUT) | CRL(5, CNF_AFPP|MODE_FAST) | CRL(6, CNF_FLINPUT) | CRL(7, CNF_AFPP|MODE_FAST);
|
||||
// USB pullup (PA15) - pushpull output
|
||||
USBPU_OFF();
|
||||
GPIOA->CRH = CRH(15, CNF_PPOUTPUT | MODE_SLOW);
|
||||
GPIOA->CRH = CRH(8, CNF_PPOUTPUT | MODE_SLOW) | CRH(9, CNF_PUDINPUT | MODE_INPUT) | CRH(10, CNF_PPOUTPUT | MODE_SLOW);
|
||||
}
|
||||
|
||||
void hw_setup(){
|
||||
gpio_setup();
|
||||
#ifndef EBUG
|
||||
iwdg_setup();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* This file is part of the canonmanage project.
|
||||
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
|
||||
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -17,40 +17,39 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef __HARDWARE_H__
|
||||
#define __HARDWARE_H__
|
||||
|
||||
#include <stm32f1.h>
|
||||
|
||||
// LED0 - PC13 (bluepill), blinking each second
|
||||
#define LED0_port GPIOC
|
||||
#define LED0_pin (1<<13)
|
||||
|
||||
#define LED_blink(x) pin_toggle(x ## _port, x ## _pin)
|
||||
#define LED_on(x) pin_clear(x ## _port, x ## _pin)
|
||||
#define LED_off(x) pin_set(x ## _port, x ## _pin)
|
||||
|
||||
// USB DP pullup: PA10
|
||||
#define USBPU_port GPIOA
|
||||
#define USBPU_pin (1<<15)
|
||||
#define USBPU_ON() pin_set(USBPU_port, USBPU_pin)
|
||||
#define USBPU_OFF() pin_clear(USBPU_port, USBPU_pin)
|
||||
#define USBPU_pin (1<<10)
|
||||
#define USBPU_ON() pin_clear(USBPU_port, USBPU_pin)
|
||||
#define USBPU_OFF() pin_set(USBPU_port, USBPU_pin)
|
||||
|
||||
// Ven (enable lens voltage) - PA8
|
||||
#define VEN_port GPIOA
|
||||
#define VEN_pin (1<<8)
|
||||
#define LENS_ON() pin_set(VEN_port, VEN_pin)
|
||||
#define LENS_OFF() pin_clear(VEN_port, VEN_pin)
|
||||
|
||||
// CAN-USB switch: PC13, pullup
|
||||
#define USBCAN_port GPIOC
|
||||
#define USBCAN_pin (1<<13)
|
||||
#define ISUSB() (USBCAN_port->IDR & USBCAN_pin)
|
||||
|
||||
// Lens detect: PA4, pullup
|
||||
#define LENSDET_port GPIOA
|
||||
#define LENSDET_pin (1<<4)
|
||||
#define LENSCONNECTED() (0 == (LENSDET_port->IDR & LENSDET_pin))
|
||||
|
||||
// Overcurrent detect: PA9, pullup
|
||||
#define OC_port GPIOA
|
||||
#define OC_pin (1<<9)
|
||||
#define OVERCURRENT() (0 == (OC_port->IDR & OC_pin))
|
||||
|
||||
extern volatile uint32_t Tms;
|
||||
|
||||
void hw_setup();
|
||||
|
||||
// SPI RX/TX max len
|
||||
#define SPIBUFSZ (32)
|
||||
|
||||
#define DMA_SPI_Rx_IRQ DMA1_Channel2_IRQn
|
||||
#define SPIx SPI1
|
||||
#define SPI_APB2 RCC_APB2ENR_SPI1EN
|
||||
#define DMA_SPI DMA1
|
||||
#define DMA_SPI_AHBENR RCC_AHBENR_DMA1EN
|
||||
#define DMA_SPI_TCIF DMA_ISR_TCIF2
|
||||
#define DMA_SPI_CTCIF DMA_IFCR_CTCIF2
|
||||
#define DMA_SPI_TxChannel DMA1_Channel3
|
||||
#define DMA_SPI_RxChannel DMA1_Channel2
|
||||
#define DMA_SPI_Rx_ISR dma1_channel2_isr
|
||||
|
||||
#endif // __HARDWARE_H__
|
||||
|
||||
@ -220,49 +220,29 @@
|
||||
)
|
||||
|
||||
(footprint "MountingHole:MountingHole_3.2mm_M3" locked (layer "F.Cu")
|
||||
(tedit 56D1B4CB) (tstamp 16734d16-1a42-4a22-b869-4a9ca8cedfbe)
|
||||
(at 125.88 63.225)
|
||||
(tedit 56D1B4CB) (tstamp 1f52451a-b605-4b37-8d5e-abcdc42150a5)
|
||||
(at 86.05 63.225)
|
||||
(descr "Mounting Hole 3.2mm, no annular, M3")
|
||||
(tags "mounting hole 3.2mm no annular m3")
|
||||
(attr exclude_from_pos_files exclude_from_bom)
|
||||
(property "Sheetfile" "Canon_manage.kicad_sch")
|
||||
(property "Sheetname" "")
|
||||
(path "/815fbf81-beb8-4c4e-bdc3-f07e25d3e951")
|
||||
(attr exclude_from_pos_files)
|
||||
(fp_text reference "H4" (at 0 -4.2) (layer "F.SilkS") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 423b774c-dc00-4fee-ae67-3225fd41f07c)
|
||||
(tstamp 7299b0f1-69ab-4f01-8610-2772d137165d)
|
||||
)
|
||||
(fp_text value "MountingHole_3.2mm_M3" (at 0 4.2) (layer "F.Fab")
|
||||
(fp_text value "MountingHole" (at 0 4.2) (layer "F.Fab") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp aca4c892-5600-4da2-8297-84fb9632dfb6)
|
||||
(tstamp 4dffff95-92ca-4481-943f-45b7add05de0)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
|
||||
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp eeabc154-dc58-4096-b340-0aa7fc3f29de)
|
||||
(tstamp c90a2aa4-9f12-4914-80bb-b6369d9e55c2)
|
||||
)
|
||||
(fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp 005643d7-0a13-4acb-8109-ee0e20b7b556))
|
||||
(fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp c794eb6e-1514-4227-8dea-1d1fd26599e7))
|
||||
(pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp 4a0ba1b0-0b27-452d-a7e5-e600d6d34178))
|
||||
)
|
||||
|
||||
(footprint "MountingHole:MountingHole_3.2mm_M3" locked (layer "F.Cu")
|
||||
(tedit 56D1B4CB) (tstamp 1a961959-902e-4bcd-b673-fc9141544da7)
|
||||
(at 86.05 110.665)
|
||||
(descr "Mounting Hole 3.2mm, no annular, M3")
|
||||
(tags "mounting hole 3.2mm no annular m3")
|
||||
(attr exclude_from_pos_files exclude_from_bom)
|
||||
(fp_text reference "H2" (at 0 -4.2) (layer "F.SilkS") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 63a9a259-1d1e-4d35-b593-b1e7816f163e)
|
||||
)
|
||||
(fp_text value "MountingHole_3.2mm_M3" (at 0 4.2) (layer "F.Fab")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 15f6d9c0-dd63-4cb2-baa9-364e6544f36c)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 46cf29e9-7192-4c1f-8e3b-b51358ebff34)
|
||||
)
|
||||
(fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp 09e7f6c0-c44a-48cd-b80c-13c5653126e8))
|
||||
(fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp 95166638-aa04-4554-a5bf-8dad35c4eb32))
|
||||
(pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp cf9209c8-1741-4bf1-b789-b6e2ba0d338c))
|
||||
(fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp e95ebcd8-a15c-4fb0-844a-c331f47741f5))
|
||||
(fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp b40fe7fb-1db8-4227-b12d-e2efdeeebb7f))
|
||||
(pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp 5abf1666-97a3-4285-b42d-ae3ae56ada75))
|
||||
)
|
||||
|
||||
(footprint "pins:Pin1.5x2mm" (layer "F.Cu")
|
||||
@ -290,6 +270,32 @@
|
||||
(net 14 "Net-(J3-Pad1)") (pinfunction "Pin_1") (pintype "passive") (tstamp 643f38c2-2209-44c5-98f4-6c59d229929b))
|
||||
)
|
||||
|
||||
(footprint "MountingHole:MountingHole_3.2mm_M3" locked (layer "F.Cu")
|
||||
(tedit 56D1B4CB) (tstamp 2d78e870-7ed8-4503-b034-e1c28def1d2c)
|
||||
(at 86.05 110.665)
|
||||
(descr "Mounting Hole 3.2mm, no annular, M3")
|
||||
(tags "mounting hole 3.2mm no annular m3")
|
||||
(property "Sheetfile" "Canon_manage.kicad_sch")
|
||||
(property "Sheetname" "")
|
||||
(path "/96a85704-1d3f-41dc-85e8-ca55d20ba69a")
|
||||
(attr exclude_from_pos_files)
|
||||
(fp_text reference "H2" (at 0 -4.2) (layer "F.SilkS") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 7db34386-d81b-4450-822f-841cf0ffd4d2)
|
||||
)
|
||||
(fp_text value "MountingHole" (at 0 4.2) (layer "F.Fab") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 861dfbd6-6bc2-4c69-b91f-a1e4c1a23bc0)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp e4dc35a9-1f7d-46df-8953-083627a557d9)
|
||||
)
|
||||
(fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp 9447bc25-e9fd-4447-9041-f664ba825feb))
|
||||
(fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp 58b15950-7523-4b6f-9216-cc76af372d88))
|
||||
(pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp ae2c7cbf-b419-4938-9183-1dc4c25c650a))
|
||||
)
|
||||
|
||||
(footprint "pins:Pin1.5x2mm" (layer "F.Cu")
|
||||
(tedit 5A0F774F) (tstamp 371e2d2f-11bf-4c8f-b211-db9c061de80d)
|
||||
(at 109.64 64.82)
|
||||
@ -315,6 +321,32 @@
|
||||
(net 2 "GND") (pinfunction "Pin_1") (pintype "passive") (tstamp b403a92e-2530-4852-99ef-2c64f0fb02f7))
|
||||
)
|
||||
|
||||
(footprint "MountingHole:MountingHole_3.2mm_M3" locked (layer "F.Cu")
|
||||
(tedit 56D1B4CB) (tstamp 37a4f545-23e5-4392-ae21-4a857e2dc22a)
|
||||
(at 125.88 63.225)
|
||||
(descr "Mounting Hole 3.2mm, no annular, M3")
|
||||
(tags "mounting hole 3.2mm no annular m3")
|
||||
(property "Sheetfile" "Canon_manage.kicad_sch")
|
||||
(property "Sheetname" "")
|
||||
(path "/043d2f7b-4c22-4806-a095-c3e2c7a41696")
|
||||
(attr exclude_from_pos_files)
|
||||
(fp_text reference "H3" (at 0 -4.2) (layer "F.SilkS") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp d9f5f5a3-2e6d-46a8-8f7b-80df8c5520e5)
|
||||
)
|
||||
(fp_text value "MountingHole" (at 0 4.2) (layer "F.Fab") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 0964047c-629e-4247-b794-c006198d862a)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp e510d8ba-bcaa-446d-9204-e8e3fdea19b5)
|
||||
)
|
||||
(fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp d5e6d297-5b69-449f-a9dd-7c29a3ab4f13))
|
||||
(fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp 4a7a1926-78f4-4264-acf1-68c87b5e700d))
|
||||
(pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp a09501f7-61bf-4798-b503-46d66587d85c))
|
||||
)
|
||||
|
||||
(footprint "pins:Pin1.5x2mm" (layer "F.Cu")
|
||||
(tedit 5A0F774F) (tstamp 3d86eae8-4725-4b17-8ece-6d07ec290772)
|
||||
(at 99.5 65.5)
|
||||
@ -598,27 +630,46 @@
|
||||
)
|
||||
)
|
||||
|
||||
(footprint "MountingHole:MountingHole_3.2mm_M3" locked (layer "F.Cu")
|
||||
(tedit 56D1B4CB) (tstamp a715d835-13de-4a94-9347-ded7789445f9)
|
||||
(at 86.05 63.225)
|
||||
(descr "Mounting Hole 3.2mm, no annular, M3")
|
||||
(tags "mounting hole 3.2mm no annular m3")
|
||||
(attr exclude_from_pos_files exclude_from_bom)
|
||||
(fp_text reference "H3" (at 0 -4.2) (layer "F.SilkS") hide
|
||||
(footprint "Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder" (layer "F.Cu")
|
||||
(tedit 5F68FEEE) (tstamp a35e7d11-e2a1-4dc4-9be3-c5cceeb133ad)
|
||||
(at 81.026 81.6845 90)
|
||||
(descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
|
||||
(tags "resistor handsolder")
|
||||
(property "Sheetfile" "Canon_manage.kicad_sch")
|
||||
(property "Sheetname" "")
|
||||
(path "/0b63ce88-aa3d-4225-9db7-c40346512ac6")
|
||||
(attr smd)
|
||||
(fp_text reference "R12" (at 0 -1.43 90) (layer "F.SilkS")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp fbe06430-6383-4629-b04f-90fe35677ad2)
|
||||
(tstamp 943d471b-41c8-4a31-a8a0-fa73abc4d0e7)
|
||||
)
|
||||
(fp_text value "MountingHole_3.2mm_M3" (at 0 4.2) (layer "F.Fab")
|
||||
(fp_text value "4k7" (at 0 1.43 90) (layer "F.Fab")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 4e800cc9-d234-4e28-8b27-758aad307521)
|
||||
(tstamp 9e5996b6-8cdc-4d3e-848e-64841a622b41)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 974b8d93-8342-4b28-bf97-71adc66708b7)
|
||||
(fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
|
||||
(effects (font (size 0.4 0.4) (thickness 0.06)))
|
||||
(tstamp 5c5c328d-cbeb-4268-9321-e259c5ee3371)
|
||||
)
|
||||
(fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 9873bf99-fddd-4799-98be-f64f1c52b16e))
|
||||
(fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer "F.SilkS") (width 0.12) (tstamp b5dcc3bc-2a8c-4b26-8f98-f96b55f26c11))
|
||||
(fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 0994633d-4350-4a75-9ebe-fadea03c3dbe))
|
||||
(fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 24fc1602-395d-4152-8d7f-deda95bbafe9))
|
||||
(fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 2bcec582-d46b-4be1-ae75-6e0e787ae295))
|
||||
(fp_line (start 1.65 0.73) (end -1.65 0.73) (layer "F.CrtYd") (width 0.05) (tstamp a2ad4536-880e-4f10-b50c-1426373b683b))
|
||||
(fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 2e353638-2c3e-4462-bbbd-5bb4aa0a9dcd))
|
||||
(fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 3df4bdf7-67b7-47e0-be85-3a703e426a03))
|
||||
(fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 89c18f4c-1328-4f30-a2f8-2120c1db049e))
|
||||
(fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp e9546b2c-5079-4ed3-9442-78b7696be04d))
|
||||
(pad "1" smd roundrect (at -0.9125 0 90) (size 0.975 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
|
||||
(net 5 "+3V3") (pintype "passive") (tstamp 76d1ac48-d2f8-4d15-bdb0-eeb93226824c))
|
||||
(pad "2" smd roundrect (at 0.9125 0 90) (size 0.975 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
|
||||
(net 8 "/SPI_MISO") (pintype "passive") (tstamp ed38931e-53d6-47c4-9bff-7ca4e4846800))
|
||||
(model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl"
|
||||
(offset (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
(fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp 1b073049-b474-4704-a731-8831ffb40981))
|
||||
(fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp 1c02cde8-d1e8-46c0-8d61-f3c5ae69ddba))
|
||||
(pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp ff4556d0-5661-4b9f-b2d2-5f484c47d027))
|
||||
)
|
||||
|
||||
(footprint "pins:Pin1.5x2mm" (layer "F.Cu")
|
||||
@ -646,29 +697,6 @@
|
||||
(net 36 "/Vlens") (pinfunction "Pin_1") (pintype "passive") (tstamp 8b0a16fe-b739-4867-a2d3-631059457000))
|
||||
)
|
||||
|
||||
(footprint "MountingHole:MountingHole_3.2mm_M3" locked (layer "F.Cu")
|
||||
(tedit 56D1B4CB) (tstamp b1a0ea7c-550a-4e9e-ba53-becec6e7b063)
|
||||
(at 125.88 110.665)
|
||||
(descr "Mounting Hole 3.2mm, no annular, M3")
|
||||
(tags "mounting hole 3.2mm no annular m3")
|
||||
(attr exclude_from_pos_files exclude_from_bom)
|
||||
(fp_text reference "H1" (at 0 -4.2) (layer "F.SilkS") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp d1077c1c-6626-4803-ba6f-e90763c2f29b)
|
||||
)
|
||||
(fp_text value "MountingHole_3.2mm_M3" (at 0 4.2) (layer "F.Fab")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 70f9b518-1e74-4881-8506-9a45895e59da)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp f12cf1bf-0c1d-4553-97e4-93bbfac252c7)
|
||||
)
|
||||
(fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp d8c4537e-5602-4826-8c4e-551ef9170947))
|
||||
(fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp eb80521f-faaf-4d41-9674-6ee59ea1bc5a))
|
||||
(pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp b9f916d9-362d-46d1-a8aa-86ad9c1ed087))
|
||||
)
|
||||
|
||||
(footprint "pins:Pin1.5x2mm" (layer "F.Cu")
|
||||
(tedit 5A0F774F) (tstamp b72e6226-01d2-4e4c-b5d0-fefc78e0bcd9)
|
||||
(at 101.7 64.91)
|
||||
@ -736,6 +764,32 @@
|
||||
)
|
||||
)
|
||||
|
||||
(footprint "MountingHole:MountingHole_3.2mm_M3" locked (layer "F.Cu")
|
||||
(tedit 56D1B4CB) (tstamp be0aee75-4862-4d0d-b27f-5dee529173c0)
|
||||
(at 125.88 110.665)
|
||||
(descr "Mounting Hole 3.2mm, no annular, M3")
|
||||
(tags "mounting hole 3.2mm no annular m3")
|
||||
(property "Sheetfile" "Canon_manage.kicad_sch")
|
||||
(property "Sheetname" "")
|
||||
(path "/7262490d-8a4f-4839-996e-829c60ad379f")
|
||||
(attr exclude_from_pos_files)
|
||||
(fp_text reference "H1" (at 0 -4.2) (layer "F.SilkS") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 9fe4648b-144d-4d85-9e73-368119f37ad1)
|
||||
)
|
||||
(fp_text value "MountingHole" (at 0 4.2) (layer "F.Fab") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp f0fefcda-105c-4a9d-aaf6-72fe2c47eaae)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 7962260c-3477-4d2f-a127-145e4b2a27ea)
|
||||
)
|
||||
(fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp c0221cad-722a-42ba-a111-4a7117bad6e4))
|
||||
(fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp b5ebc091-d33d-406a-8bb9-1030630ecbbf))
|
||||
(pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp 5300a82f-d322-44b1-bee1-14c05cf72ebc))
|
||||
)
|
||||
|
||||
(footprint "pins:Pin1.5x2mm" (layer "F.Cu")
|
||||
(tedit 5A0F774F) (tstamp ccbefbd2-71d6-4dc7-9a51-06952b253b7c)
|
||||
(at 106.27 64.49)
|
||||
@ -2903,6 +2957,8 @@
|
||||
(segment (start 131.064 84.8868) (end 128.613199 84.8868) (width 1) (layer "F.Cu") (net 5) (tstamp 29eb11c4-fc4f-4471-850d-cfaa2616180c))
|
||||
(segment (start 128.613199 84.8868) (end 128.499999 85) (width 1) (layer "F.Cu") (net 5) (tstamp 34208ed1-3e08-43bd-8bea-eee98a13cddd))
|
||||
(segment (start 80.1624 87.2236) (end 80.1624 86.8426) (width 0.25) (layer "F.Cu") (net 5) (tstamp 4b0097ec-bdd0-476b-a0a1-be69494f1791))
|
||||
(segment (start 81.1006 82.5224) (end 81.026 82.597) (width 0.25) (layer "F.Cu") (net 5) (tstamp 5e32793a-0e12-4bca-bf4a-ad86e0c1bf47))
|
||||
(segment (start 82.677 82.5224) (end 81.1006 82.5224) (width 0.25) (layer "F.Cu") (net 5) (tstamp 6dcf74f7-4c20-4439-9cca-f695bc218b95))
|
||||
(segment (start 131.064 84.8868) (end 131.064 84.936) (width 1) (layer "F.Cu") (net 5) (tstamp 75f1484f-c5be-4fd1-8294-82bcac522de0))
|
||||
(segment (start 82.6516 82.5478) (end 82.677 82.5224) (width 0.5) (layer "F.Cu") (net 5) (tstamp 8255f17f-b25f-4bf7-b619-f39db5d40b22))
|
||||
(segment (start 83.197476 86.8426) (end 83.355274 87.000398) (width 1) (layer "F.Cu") (net 5) (tstamp 85521da3-a16e-4e28-9daf-5450ed36dd45))
|
||||
@ -2978,13 +3034,15 @@
|
||||
(segment (start 73.925 88.44) (end 76.66 88.44) (width 0.25) (layer "B.Cu") (net 7) (tstamp 599cae64-23e3-4137-b8aa-51ac4df74cc6))
|
||||
(segment (start 78.5876 86.5124) (end 78.5876 84.4296) (width 0.25) (layer "B.Cu") (net 7) (tstamp a9f5becb-001f-40a4-8796-22b8fc539d4e))
|
||||
(segment (start 76.66 88.44) (end 78.5876 86.5124) (width 0.25) (layer "B.Cu") (net 7) (tstamp f92bcc1c-2343-4881-a166-48ad65a8c542))
|
||||
(segment (start 79.3496 80.772) (end 79.3496 80.264) (width 0.25) (layer "F.Cu") (net 8) (tstamp 25391ded-eb00-4ef4-b8b8-8224d67291f5))
|
||||
(segment (start 79.3496 84.8868) (end 79.3496 80.772) (width 0.25) (layer "F.Cu") (net 8) (tstamp 35952afd-cd25-4a6c-8647-c8ecb8959a01))
|
||||
(segment (start 81.026 80.772) (end 79.3496 80.772) (width 0.25) (layer "F.Cu") (net 8) (tstamp 36561c37-e955-4a40-8077-de768fa499a7))
|
||||
(segment (start 79.8068 78.0288) (end 78.196232 78.0288) (width 0.25) (layer "F.Cu") (net 8) (tstamp 576c4823-b61d-4455-9127-3f9aa1c092d4))
|
||||
(segment (start 77.6732 86.0442) (end 78.1922 86.0442) (width 0.25) (layer "F.Cu") (net 8) (tstamp 7f1ac5c0-62c1-49bf-a25e-e7194cb6e7ec))
|
||||
(segment (start 78.1922 86.0442) (end 79.3496 84.8868) (width 0.25) (layer "F.Cu") (net 8) (tstamp 8356ad68-0fb7-4551-83c9-a1d29aec28b0))
|
||||
(segment (start 80.0608 78.2828) (end 79.8068 78.0288) (width 0.25) (layer "F.Cu") (net 8) (tstamp c5cd7a92-4f3f-49f7-9458-41ef2a41aad2))
|
||||
(segment (start 78.196232 78.0288) (end 77.334532 78.8905) (width 0.25) (layer "F.Cu") (net 8) (tstamp e4d1e57f-3a3a-444a-80fc-296642c1c811))
|
||||
(segment (start 79.3496 80.264) (end 80.0608 79.5528) (width 0.25) (layer "F.Cu") (net 8) (tstamp f321af12-cdf9-4805-b953-3c03c0e46b33))
|
||||
(segment (start 79.3496 84.8868) (end 79.3496 80.264) (width 0.25) (layer "F.Cu") (net 8) (tstamp f6906bce-a422-401a-a7cd-990b16d0f3ee))
|
||||
(segment (start 80.0608 79.5528) (end 80.0608 78.2828) (width 0.25) (layer "F.Cu") (net 8) (tstamp fe069bf4-fc2f-420e-82e4-340202c237bb))
|
||||
(via (at 77.6732 86.0442) (size 0.7) (drill 0.3) (layers "F.Cu" "B.Cu") (net 8) (tstamp 342f5985-ad4d-47e8-9ccd-44bd847ce7a7))
|
||||
(segment (start 77.1 86.0442) (end 75.2042 87.94) (width 0.25) (layer "B.Cu") (net 8) (tstamp b6b8e868-bd9d-4fc8-b197-dac435299fe3))
|
||||
@ -4685,12 +4743,12 @@
|
||||
(xy 127.012811 82.466616)
|
||||
(xy 127.012809 82.466607)
|
||||
(xy 127.012559 82.465296)
|
||||
(xy 126.881541 81.9067)
|
||||
(xy 126.868913 81.85286)
|
||||
(xy 126.807099 81.589314)
|
||||
(xy 126.807095 81.5893)
|
||||
(xy 126.806794 81.588015)
|
||||
(xy 126.564474 80.72012)
|
||||
(xy 126.348837 80.056457)
|
||||
(xy 126.340787 80.031682)
|
||||
(xy 126.28643 79.864389)
|
||||
(xy 126.286427 79.864379)
|
||||
(xy 126.286022 79.863134)
|
||||
@ -6585,7 +6643,7 @@
|
||||
(xy 73.515797 79.729929)
|
||||
(xy 73.522027 79.733769)
|
||||
(xy 73.522028 79.73377)
|
||||
(xy 73.599271 79.781383)
|
||||
(xy 73.606477 79.785825)
|
||||
(xy 73.66388 79.821209)
|
||||
(xy 73.828991 79.875974)
|
||||
(xy 73.835827 79.876674)
|
||||
@ -6691,7 +6749,7 @@
|
||||
(xy 69.974744 82.600633)
|
||||
(xy 70.039808 81.916)
|
||||
(xy 70.041043 81.9067)
|
||||
(xy 70.050999 81.848445)
|
||||
(xy 70.044085 81.8889)
|
||||
(xy 70.62311 78.500935)
|
||||
(xy 70.626615 78.485981)
|
||||
(xy 70.637056 78.451156)
|
||||
@ -7129,12 +7187,12 @@
|
||||
(xy 85.652378 79.863134)
|
||||
(xy 85.651973 79.864379)
|
||||
(xy 85.65197 79.864389)
|
||||
(xy 85.589563 80.056457)
|
||||
(xy 85.597613 80.031682)
|
||||
(xy 85.373926 80.72012)
|
||||
(xy 85.131606 81.588015)
|
||||
(xy 85.131305 81.5893)
|
||||
(xy 85.131301 81.589314)
|
||||
(xy 85.056859 81.9067)
|
||||
(xy 85.069487 81.85286)
|
||||
(xy 84.925841 82.465296)
|
||||
(xy 84.925591 82.466607)
|
||||
(xy 84.925589 82.466616)
|
||||
@ -7216,6 +7274,9 @@
|
||||
(xy 83.513569 82.157129)
|
||||
(xy 83.511527 82.150844)
|
||||
(xy 83.41604 81.985456)
|
||||
(xy 83.32151 81.880469)
|
||||
(xy 83.292675 81.848445)
|
||||
(xy 83.292674 81.848444)
|
||||
(xy 83.288253 81.843534)
|
||||
(xy 83.133752 81.731282)
|
||||
(xy 83.127724 81.728598)
|
||||
@ -7237,136 +7298,59 @@
|
||||
(xy 82.226278 81.728597)
|
||||
(xy 82.226276 81.728598)
|
||||
(xy 82.220248 81.731282)
|
||||
(xy 82.214907 81.735162)
|
||||
(xy 82.214906 81.735163)
|
||||
(xy 82.169428 81.768205)
|
||||
(xy 82.065747 81.843534)
|
||||
(xy 81.93796 81.985456)
|
||||
(xy 81.842473 82.150844)
|
||||
(xy 81.783458 82.332472)
|
||||
(xy 81.763496 82.5224)
|
||||
(xy 81.764186 82.528965)
|
||||
(xy 81.781618 82.694818)
|
||||
(xy 81.783458 82.712328)
|
||||
(xy 81.842473 82.893956)
|
||||
(xy 81.845776 82.899678)
|
||||
(xy 81.845777 82.899679)
|
||||
(xy 81.855198 82.915997)
|
||||
(xy 81.93796 83.059344)
|
||||
(xy 81.942378 83.064251)
|
||||
(xy 81.942379 83.064252)
|
||||
(xy 81.966458 83.090994)
|
||||
(xy 82.065747 83.201266)
|
||||
(xy 82.220248 83.313518)
|
||||
(xy 82.226274 83.316201)
|
||||
(xy 82.226281 83.316205)
|
||||
(xy 82.364224 83.37762)
|
||||
(xy 82.41832 83.4236)
|
||||
(xy 82.438976 83.492727)
|
||||
(xy 82.438976 85.7081)
|
||||
(xy 82.418974 85.776221)
|
||||
(xy 82.365318 85.822714)
|
||||
(xy 82.312976 85.8341)
|
||||
(xy 81.739661 85.8341)
|
||||
(xy 81.67154 85.814098)
|
||||
(xy 81.625047 85.760442)
|
||||
(xy 81.614943 85.690168)
|
||||
(xy 81.619828 85.669164)
|
||||
(xy 81.665125 85.529754)
|
||||
(xy 81.665125 85.529753)
|
||||
(xy 81.667165 85.523475)
|
||||
(xy 81.686029 85.344)
|
||||
(xy 81.680835 85.294583)
|
||||
(xy 81.667855 85.171089)
|
||||
(xy 81.667855 85.171088)
|
||||
(xy 81.667165 85.164525)
|
||||
(xy 81.656507 85.131721)
|
||||
(xy 81.625725 85.036983)
|
||||
(xy 81.611399 84.992893)
|
||||
(xy 81.603181 84.978658)
|
||||
(xy 81.542525 84.8736)
|
||||
(xy 81.525787 84.804605)
|
||||
(xy 81.542525 84.7476)
|
||||
(xy 81.608095 84.63403)
|
||||
(xy 81.608096 84.634029)
|
||||
(xy 81.611399 84.628307)
|
||||
(xy 81.652683 84.501246)
|
||||
(xy 81.665125 84.462954)
|
||||
(xy 81.665125 84.462953)
|
||||
(xy 81.667165 84.456675)
|
||||
(xy 81.673994 84.391708)
|
||||
(xy 81.685339 84.283765)
|
||||
(xy 81.686029 84.2772)
|
||||
(xy 81.678236 84.203059)
|
||||
(xy 81.667855 84.104289)
|
||||
(xy 81.667855 84.104288)
|
||||
(xy 81.667165 84.097725)
|
||||
(xy 81.648631 84.040681)
|
||||
(xy 81.618011 83.946444)
|
||||
(xy 81.611399 83.926093)
|
||||
(xy 81.607839 83.919926)
|
||||
(xy 81.549146 83.818268)
|
||||
(xy 81.521167 83.769807)
|
||||
(xy 81.400413 83.635696)
|
||||
(xy 81.254415 83.529622)
|
||||
(xy 81.248387 83.526938)
|
||||
(xy 81.248385 83.526937)
|
||||
(xy 81.095583 83.458905)
|
||||
(xy 81.095581 83.458905)
|
||||
(xy 81.089552 83.45622)
|
||||
(xy 81.001292 83.43746)
|
||||
(xy 80.919489 83.420072)
|
||||
(xy 80.919485 83.420072)
|
||||
(xy 80.913032 83.4187)
|
||||
(xy 80.732568 83.4187)
|
||||
(xy 80.726115 83.420072)
|
||||
(xy 80.726111 83.420072)
|
||||
(xy 80.644308 83.43746)
|
||||
(xy 80.556048 83.45622)
|
||||
(xy 80.550019 83.458904)
|
||||
(xy 80.550017 83.458905)
|
||||
(xy 80.397216 83.526937)
|
||||
(xy 80.397214 83.526938)
|
||||
(xy 80.391186 83.529622)
|
||||
(xy 80.385845 83.533502)
|
||||
(xy 80.385844 83.533503)
|
||||
(xy 80.250531 83.631813)
|
||||
(xy 80.250529 83.631815)
|
||||
(xy 80.245187 83.635696)
|
||||
(xy 80.202734 83.682845)
|
||||
(xy 80.142291 83.720083)
|
||||
(xy 80.071307 83.718732)
|
||||
(xy 80.012322 83.679218)
|
||||
(xy 79.984064 83.614087)
|
||||
(xy 79.9831 83.598533)
|
||||
(xy 79.9831 80.578594)
|
||||
(xy 80.003102 80.510473)
|
||||
(xy 80.020005 80.489499)
|
||||
(xy 80.453047 80.056457)
|
||||
(xy 80.461337 80.048913)
|
||||
(xy 80.467818 80.0448)
|
||||
(xy 80.514459 79.995132)
|
||||
(xy 80.517213 79.992291)
|
||||
(xy 80.536935 79.972569)
|
||||
(xy 80.539419 79.969367)
|
||||
(xy 80.547117 79.960355)
|
||||
(xy 80.571961 79.933898)
|
||||
(xy 80.577386 79.928121)
|
||||
(xy 80.587147 79.910366)
|
||||
(xy 80.597998 79.893847)
|
||||
(xy 80.610414 79.877841)
|
||||
(xy 80.620375 79.854823)
|
||||
(xy 80.627974 79.837263)
|
||||
(xy 80.633191 79.826613)
|
||||
(xy 80.654495 79.78786)
|
||||
(xy 80.659533 79.768237)
|
||||
(xy 80.665937 79.749534)
|
||||
(xy 80.670833 79.73822)
|
||||
(xy 80.670833 79.738219)
|
||||
(xy 80.673981 79.730945)
|
||||
(xy 80.67522 79.723122)
|
||||
(xy 80.675223 79.723112)
|
||||
(xy 80.680899 79.687276)
|
||||
(xy 80.683305 79.675656)
|
||||
(xy 80.692328 79.640511)
|
||||
(xy 80.692328 79.64051)
|
||||
(xy 82.061332 81.848437)
|
||||
(xy 82.05642 81.85286)
|
||||
(xy 82.055295 81.851611)
|
||||
(xy 82.001986 81.884451)
|
||||
(xy 81.9688 81.8889)
|
||||
(xy 81.912688 81.8889)
|
||||
(xy 81.844567 81.868898)
|
||||
(xy 81.82367 81.852073)
|
||||
(xy 81.823208 81.851611)
|
||||
(xy 81.788589 81.817053)
|
||||
(xy 81.745214 81.773753)
|
||||
(xy 81.711135 81.71147)
|
||||
(xy 81.716138 81.64065)
|
||||
(xy 81.745059 81.595563)
|
||||
(xy 81.847754 81.492688)
|
||||
(xy 81.847758 81.492683)
|
||||
(xy 81.852929 81.487503)
|
||||
(xy 81.861875 81.47299)
|
||||
(xy 81.940369 81.34565)
|
||||
(xy 81.94037 81.345648)
|
||||
(xy 81.944209 81.33942)
|
||||
(xy 81.998974 81.174309)
|
||||
(xy 82.0095 81.071572)
|
||||
(xy 82.0095 80.472428)
|
||||
(xy 82.007302 80.451244)
|
||||
(xy 81.999419 80.375265)
|
||||
(xy 81.999418 80.375261)
|
||||
(xy 81.998707 80.368407)
|
||||
(xy 81.973074 80.291574)
|
||||
(xy 81.945972 80.210341)
|
||||
(xy 81.943654 80.203393)
|
||||
(xy 81.852116 80.055469)
|
||||
(xy 81.83718 80.040559)
|
||||
(xy 81.734184 79.937742)
|
||||
(xy 81.734179 79.937738)
|
||||
(xy 81.729003 79.932571)
|
||||
(xy 81.722772 79.92873)
|
||||
(xy 81.58715 79.845131)
|
||||
(xy 81.587148 79.84513)
|
||||
(xy 81.58092 79.841291)
|
||||
(xy 81.415809 79.786526)
|
||||
(xy 81.408973 79.785826)
|
||||
(xy 81.40897 79.785825)
|
||||
(xy 81.357474 79.780549)
|
||||
(xy 81.313072 79.776)
|
||||
(xy 80.818131 79.776)
|
||||
(xy 80.75001 79.755998)
|
||||
(xy 80.703517 79.702342)
|
||||
(xy 80.69343 79.636217)
|
||||
(xy 80.6943 79.63283)
|
||||
(xy 80.6943 79.612576)
|
||||
(xy 80.695851 79.592865)
|
||||
@ -7586,6 +7570,9 @@
|
||||
(xy 76.911843 83.000712)
|
||||
(xy 76.91012 83.006643)
|
||||
(xy 76.867638 83.152869)
|
||||
(xy 76.867134 83.159274)
|
||||
(xy 76.867133 83.159279)
|
||||
(xy 76.864893 83.187742)
|
||||
(xy 76.8647 83.190198)
|
||||
(xy 76.8647 84.348202)
|
||||
(xy 76.867638 84.385531)
|
||||
@ -7640,6 +7627,9 @@
|
||||
(xy 76.578762 84.385531)
|
||||
(xy 76.5817 84.348202)
|
||||
(xy 76.5817 83.190198)
|
||||
(xy 76.581507 83.187742)
|
||||
(xy 76.579267 83.159279)
|
||||
(xy 76.579266 83.159274)
|
||||
(xy 76.578762 83.152869)
|
||||
(xy 76.53628 83.006643)
|
||||
(xy 76.534557 83.000712)
|
||||
@ -7667,10 +7657,10 @@
|
||||
(xy 77.107922 81.616603)
|
||||
(xy 77.107924 81.616602)
|
||||
(xy 77.113952 81.613918)
|
||||
(xy 77.147766 81.589351)
|
||||
(xy 77.139216 81.595563)
|
||||
(xy 77.169357 81.573664)
|
||||
(xy 77.268453 81.501666)
|
||||
(xy 77.346822 81.414628)
|
||||
(xy 77.276537 81.492688)
|
||||
(xy 77.391821 81.364652)
|
||||
(xy 77.391822 81.364651)
|
||||
(xy 77.39624 81.359744)
|
||||
@ -9267,12 +9257,12 @@
|
||||
(xy 127.012811 82.466616)
|
||||
(xy 127.012809 82.466607)
|
||||
(xy 127.012559 82.465296)
|
||||
(xy 126.881541 81.9067)
|
||||
(xy 126.868913 81.85286)
|
||||
(xy 126.807099 81.589314)
|
||||
(xy 126.807095 81.5893)
|
||||
(xy 126.806794 81.588015)
|
||||
(xy 126.564474 80.72012)
|
||||
(xy 126.348837 80.056457)
|
||||
(xy 126.340787 80.031682)
|
||||
(xy 126.28643 79.864389)
|
||||
(xy 126.286427 79.864379)
|
||||
(xy 126.286022 79.863134)
|
||||
@ -11167,7 +11157,7 @@
|
||||
(xy 73.515797 79.729929)
|
||||
(xy 73.522027 79.733769)
|
||||
(xy 73.522028 79.73377)
|
||||
(xy 73.599271 79.781383)
|
||||
(xy 73.606477 79.785825)
|
||||
(xy 73.66388 79.821209)
|
||||
(xy 73.828991 79.875974)
|
||||
(xy 73.835827 79.876674)
|
||||
@ -11273,7 +11263,7 @@
|
||||
(xy 69.974744 82.600633)
|
||||
(xy 70.039808 81.916)
|
||||
(xy 70.041043 81.9067)
|
||||
(xy 70.050999 81.848445)
|
||||
(xy 70.044085 81.8889)
|
||||
(xy 70.62311 78.500935)
|
||||
(xy 70.626615 78.485981)
|
||||
(xy 70.637056 78.451156)
|
||||
@ -11711,12 +11701,12 @@
|
||||
(xy 85.652378 79.863134)
|
||||
(xy 85.651973 79.864379)
|
||||
(xy 85.65197 79.864389)
|
||||
(xy 85.589563 80.056457)
|
||||
(xy 85.597613 80.031682)
|
||||
(xy 85.373926 80.72012)
|
||||
(xy 85.131606 81.588015)
|
||||
(xy 85.131305 81.5893)
|
||||
(xy 85.131301 81.589314)
|
||||
(xy 85.056859 81.9067)
|
||||
(xy 85.069487 81.85286)
|
||||
(xy 84.925841 82.465296)
|
||||
(xy 84.925591 82.466607)
|
||||
(xy 84.925589 82.466616)
|
||||
@ -11798,6 +11788,9 @@
|
||||
(xy 83.513569 82.157129)
|
||||
(xy 83.511527 82.150844)
|
||||
(xy 83.41604 81.985456)
|
||||
(xy 83.32151 81.880469)
|
||||
(xy 83.292675 81.848445)
|
||||
(xy 83.292674 81.848444)
|
||||
(xy 83.288253 81.843534)
|
||||
(xy 83.133752 81.731282)
|
||||
(xy 83.127724 81.728598)
|
||||
@ -11819,136 +11812,59 @@
|
||||
(xy 82.226278 81.728597)
|
||||
(xy 82.226276 81.728598)
|
||||
(xy 82.220248 81.731282)
|
||||
(xy 82.214907 81.735162)
|
||||
(xy 82.214906 81.735163)
|
||||
(xy 82.169428 81.768205)
|
||||
(xy 82.065747 81.843534)
|
||||
(xy 81.93796 81.985456)
|
||||
(xy 81.842473 82.150844)
|
||||
(xy 81.783458 82.332472)
|
||||
(xy 81.763496 82.5224)
|
||||
(xy 81.764186 82.528965)
|
||||
(xy 81.781618 82.694818)
|
||||
(xy 81.783458 82.712328)
|
||||
(xy 81.842473 82.893956)
|
||||
(xy 81.845776 82.899678)
|
||||
(xy 81.845777 82.899679)
|
||||
(xy 81.855198 82.915997)
|
||||
(xy 81.93796 83.059344)
|
||||
(xy 81.942378 83.064251)
|
||||
(xy 81.942379 83.064252)
|
||||
(xy 81.966458 83.090994)
|
||||
(xy 82.065747 83.201266)
|
||||
(xy 82.220248 83.313518)
|
||||
(xy 82.226274 83.316201)
|
||||
(xy 82.226281 83.316205)
|
||||
(xy 82.364224 83.37762)
|
||||
(xy 82.41832 83.4236)
|
||||
(xy 82.438976 83.492727)
|
||||
(xy 82.438976 85.7081)
|
||||
(xy 82.418974 85.776221)
|
||||
(xy 82.365318 85.822714)
|
||||
(xy 82.312976 85.8341)
|
||||
(xy 81.739661 85.8341)
|
||||
(xy 81.67154 85.814098)
|
||||
(xy 81.625047 85.760442)
|
||||
(xy 81.614943 85.690168)
|
||||
(xy 81.619828 85.669164)
|
||||
(xy 81.665125 85.529754)
|
||||
(xy 81.665125 85.529753)
|
||||
(xy 81.667165 85.523475)
|
||||
(xy 81.686029 85.344)
|
||||
(xy 81.680835 85.294583)
|
||||
(xy 81.667855 85.171089)
|
||||
(xy 81.667855 85.171088)
|
||||
(xy 81.667165 85.164525)
|
||||
(xy 81.656507 85.131721)
|
||||
(xy 81.625725 85.036983)
|
||||
(xy 81.611399 84.992893)
|
||||
(xy 81.603181 84.978658)
|
||||
(xy 81.542525 84.8736)
|
||||
(xy 81.525787 84.804605)
|
||||
(xy 81.542525 84.7476)
|
||||
(xy 81.608095 84.63403)
|
||||
(xy 81.608096 84.634029)
|
||||
(xy 81.611399 84.628307)
|
||||
(xy 81.652683 84.501246)
|
||||
(xy 81.665125 84.462954)
|
||||
(xy 81.665125 84.462953)
|
||||
(xy 81.667165 84.456675)
|
||||
(xy 81.673994 84.391708)
|
||||
(xy 81.685339 84.283765)
|
||||
(xy 81.686029 84.2772)
|
||||
(xy 81.678236 84.203059)
|
||||
(xy 81.667855 84.104289)
|
||||
(xy 81.667855 84.104288)
|
||||
(xy 81.667165 84.097725)
|
||||
(xy 81.648631 84.040681)
|
||||
(xy 81.618011 83.946444)
|
||||
(xy 81.611399 83.926093)
|
||||
(xy 81.607839 83.919926)
|
||||
(xy 81.549146 83.818268)
|
||||
(xy 81.521167 83.769807)
|
||||
(xy 81.400413 83.635696)
|
||||
(xy 81.254415 83.529622)
|
||||
(xy 81.248387 83.526938)
|
||||
(xy 81.248385 83.526937)
|
||||
(xy 81.095583 83.458905)
|
||||
(xy 81.095581 83.458905)
|
||||
(xy 81.089552 83.45622)
|
||||
(xy 81.001292 83.43746)
|
||||
(xy 80.919489 83.420072)
|
||||
(xy 80.919485 83.420072)
|
||||
(xy 80.913032 83.4187)
|
||||
(xy 80.732568 83.4187)
|
||||
(xy 80.726115 83.420072)
|
||||
(xy 80.726111 83.420072)
|
||||
(xy 80.644308 83.43746)
|
||||
(xy 80.556048 83.45622)
|
||||
(xy 80.550019 83.458904)
|
||||
(xy 80.550017 83.458905)
|
||||
(xy 80.397216 83.526937)
|
||||
(xy 80.397214 83.526938)
|
||||
(xy 80.391186 83.529622)
|
||||
(xy 80.385845 83.533502)
|
||||
(xy 80.385844 83.533503)
|
||||
(xy 80.250531 83.631813)
|
||||
(xy 80.250529 83.631815)
|
||||
(xy 80.245187 83.635696)
|
||||
(xy 80.202734 83.682845)
|
||||
(xy 80.142291 83.720083)
|
||||
(xy 80.071307 83.718732)
|
||||
(xy 80.012322 83.679218)
|
||||
(xy 79.984064 83.614087)
|
||||
(xy 79.9831 83.598533)
|
||||
(xy 79.9831 80.578594)
|
||||
(xy 80.003102 80.510473)
|
||||
(xy 80.020005 80.489499)
|
||||
(xy 80.453047 80.056457)
|
||||
(xy 80.461337 80.048913)
|
||||
(xy 80.467818 80.0448)
|
||||
(xy 80.514459 79.995132)
|
||||
(xy 80.517213 79.992291)
|
||||
(xy 80.536935 79.972569)
|
||||
(xy 80.539419 79.969367)
|
||||
(xy 80.547117 79.960355)
|
||||
(xy 80.571961 79.933898)
|
||||
(xy 80.577386 79.928121)
|
||||
(xy 80.587147 79.910366)
|
||||
(xy 80.597998 79.893847)
|
||||
(xy 80.610414 79.877841)
|
||||
(xy 80.620375 79.854823)
|
||||
(xy 80.627974 79.837263)
|
||||
(xy 80.633191 79.826613)
|
||||
(xy 80.654495 79.78786)
|
||||
(xy 80.659533 79.768237)
|
||||
(xy 80.665937 79.749534)
|
||||
(xy 80.670833 79.73822)
|
||||
(xy 80.670833 79.738219)
|
||||
(xy 80.673981 79.730945)
|
||||
(xy 80.67522 79.723122)
|
||||
(xy 80.675223 79.723112)
|
||||
(xy 80.680899 79.687276)
|
||||
(xy 80.683305 79.675656)
|
||||
(xy 80.692328 79.640511)
|
||||
(xy 80.692328 79.64051)
|
||||
(xy 82.061332 81.848437)
|
||||
(xy 82.05642 81.85286)
|
||||
(xy 82.055295 81.851611)
|
||||
(xy 82.001986 81.884451)
|
||||
(xy 81.9688 81.8889)
|
||||
(xy 81.912688 81.8889)
|
||||
(xy 81.844567 81.868898)
|
||||
(xy 81.82367 81.852073)
|
||||
(xy 81.823208 81.851611)
|
||||
(xy 81.788589 81.817053)
|
||||
(xy 81.745214 81.773753)
|
||||
(xy 81.711135 81.71147)
|
||||
(xy 81.716138 81.64065)
|
||||
(xy 81.745059 81.595563)
|
||||
(xy 81.847754 81.492688)
|
||||
(xy 81.847758 81.492683)
|
||||
(xy 81.852929 81.487503)
|
||||
(xy 81.861875 81.47299)
|
||||
(xy 81.940369 81.34565)
|
||||
(xy 81.94037 81.345648)
|
||||
(xy 81.944209 81.33942)
|
||||
(xy 81.998974 81.174309)
|
||||
(xy 82.0095 81.071572)
|
||||
(xy 82.0095 80.472428)
|
||||
(xy 82.007302 80.451244)
|
||||
(xy 81.999419 80.375265)
|
||||
(xy 81.999418 80.375261)
|
||||
(xy 81.998707 80.368407)
|
||||
(xy 81.973074 80.291574)
|
||||
(xy 81.945972 80.210341)
|
||||
(xy 81.943654 80.203393)
|
||||
(xy 81.852116 80.055469)
|
||||
(xy 81.83718 80.040559)
|
||||
(xy 81.734184 79.937742)
|
||||
(xy 81.734179 79.937738)
|
||||
(xy 81.729003 79.932571)
|
||||
(xy 81.722772 79.92873)
|
||||
(xy 81.58715 79.845131)
|
||||
(xy 81.587148 79.84513)
|
||||
(xy 81.58092 79.841291)
|
||||
(xy 81.415809 79.786526)
|
||||
(xy 81.408973 79.785826)
|
||||
(xy 81.40897 79.785825)
|
||||
(xy 81.357474 79.780549)
|
||||
(xy 81.313072 79.776)
|
||||
(xy 80.818131 79.776)
|
||||
(xy 80.75001 79.755998)
|
||||
(xy 80.703517 79.702342)
|
||||
(xy 80.69343 79.636217)
|
||||
(xy 80.6943 79.63283)
|
||||
(xy 80.6943 79.612576)
|
||||
(xy 80.695851 79.592865)
|
||||
@ -12168,6 +12084,9 @@
|
||||
(xy 76.911843 83.000712)
|
||||
(xy 76.91012 83.006643)
|
||||
(xy 76.867638 83.152869)
|
||||
(xy 76.867134 83.159274)
|
||||
(xy 76.867133 83.159279)
|
||||
(xy 76.864893 83.187742)
|
||||
(xy 76.8647 83.190198)
|
||||
(xy 76.8647 84.348202)
|
||||
(xy 76.867638 84.385531)
|
||||
@ -12222,6 +12141,9 @@
|
||||
(xy 76.578762 84.385531)
|
||||
(xy 76.5817 84.348202)
|
||||
(xy 76.5817 83.190198)
|
||||
(xy 76.581507 83.187742)
|
||||
(xy 76.579267 83.159279)
|
||||
(xy 76.579266 83.159274)
|
||||
(xy 76.578762 83.152869)
|
||||
(xy 76.53628 83.006643)
|
||||
(xy 76.534557 83.000712)
|
||||
@ -12249,10 +12171,10 @@
|
||||
(xy 77.107922 81.616603)
|
||||
(xy 77.107924 81.616602)
|
||||
(xy 77.113952 81.613918)
|
||||
(xy 77.147766 81.589351)
|
||||
(xy 77.139216 81.595563)
|
||||
(xy 77.169357 81.573664)
|
||||
(xy 77.268453 81.501666)
|
||||
(xy 77.346822 81.414628)
|
||||
(xy 77.276537 81.492688)
|
||||
(xy 77.391821 81.364652)
|
||||
(xy 77.391822 81.364651)
|
||||
(xy 77.39624 81.359744)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 31,
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_nets": [],
|
||||
@ -63,7 +63,7 @@
|
||||
36
|
||||
],
|
||||
"visible_layers": "ffffeff_ffffffff",
|
||||
"zone_display_mode": 1
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"meta": {
|
||||
"filename": "Canon_manage.kicad_prl",
|
||||
|
||||
@ -1976,6 +1976,9 @@
|
||||
(junction (at 143.383 49.149) (diameter 0) (color 0 0 0 0)
|
||||
(uuid 20ec4793-2a48-4c19-ab14-3b6cebd4bedf)
|
||||
)
|
||||
(junction (at 94.996 68.453) (diameter 0) (color 0 0 0 0)
|
||||
(uuid 24742a9a-b84f-4f75-9178-7aa73655fe71)
|
||||
)
|
||||
(junction (at 138.176 56.769) (diameter 0) (color 0 0 0 0)
|
||||
(uuid 2adb69ca-9e90-44d4-991e-b981f94776cb)
|
||||
)
|
||||
@ -2079,6 +2082,10 @@
|
||||
(stroke (width 0) (type default) (color 0 0 0 0))
|
||||
(uuid 13d2e704-8c76-42c2-86b7-8da373348c13)
|
||||
)
|
||||
(wire (pts (xy 96.901 68.453) (xy 94.996 68.453))
|
||||
(stroke (width 0) (type default) (color 0 0 0 0))
|
||||
(uuid 195d9c80-07f4-410b-bf46-a0ea1446b7b3)
|
||||
)
|
||||
(wire (pts (xy 154.178 29.972) (xy 157.099 29.972))
|
||||
(stroke (width 0) (type default) (color 0 0 0 0))
|
||||
(uuid 2924441e-2797-4328-8ecd-c1b769c7574b)
|
||||
@ -2167,6 +2174,10 @@
|
||||
(stroke (width 0) (type default) (color 0 0 0 0))
|
||||
(uuid 9e0da585-daed-4502-a63f-de3f02b4d91f)
|
||||
)
|
||||
(wire (pts (xy 94.996 68.453) (xy 81.534 68.453))
|
||||
(stroke (width 0) (type default) (color 0 0 0 0))
|
||||
(uuid a87d1d78-29f3-470e-b92f-e4f5f6b8d83b)
|
||||
)
|
||||
(wire (pts (xy 119.761 86.487) (xy 131.699 86.487))
|
||||
(stroke (width 0) (type default) (color 0 0 0 0))
|
||||
(uuid aa8d8a3e-f7ae-4a1e-ac07-b14aab5e3af2)
|
||||
@ -2340,7 +2351,7 @@
|
||||
(effects (font (size 1.27 1.27)) (justify left bottom))
|
||||
(uuid 6f0720a0-ddd7-4fea-8dd6-ddcaaf98509d)
|
||||
)
|
||||
(label "SPI_MISO" (at 81.534 68.453 0)
|
||||
(label "SPI_MISO" (at 96.901 68.453 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left bottom))
|
||||
(uuid 7481ae00-45fc-45d5-814f-292d3161f9f8)
|
||||
)
|
||||
@ -2514,6 +2525,21 @@
|
||||
)
|
||||
)
|
||||
|
||||
(symbol (lib_id "Device:R") (at 94.996 64.643 0) (unit 1)
|
||||
(in_bom yes) (on_board yes)
|
||||
(uuid 0b63ce88-aa3d-4225-9db7-c40346512ac6)
|
||||
(property "Reference" "R12" (id 0) (at 97.536 64.643 0))
|
||||
(property "Value" "4k7" (id 1) (at 94.996 64.77 90))
|
||||
(property "Footprint" "Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder" (id 2) (at 93.218 64.643 90)
|
||||
(effects (font (size 1.27 1.27)) hide)
|
||||
)
|
||||
(property "Datasheet" "~" (id 3) (at 94.996 64.643 0)
|
||||
(effects (font (size 1.27 1.27)) hide)
|
||||
)
|
||||
(pin "1" (uuid 7c0d8e43-b137-467f-b547-0ce7d20e89a9))
|
||||
(pin "2" (uuid 4bc741a3-84b0-4451-9a0a-6a91198037d5))
|
||||
)
|
||||
|
||||
(symbol (lib_id "Device:R") (at 263.017 31.877 0) (unit 1)
|
||||
(in_bom yes) (on_board yes)
|
||||
(uuid 0dfec3b5-9ee1-43b4-8ea0-660a4b8bc85e)
|
||||
@ -3243,6 +3269,22 @@
|
||||
(pin "2" (uuid 639fc6fd-d3b0-4008-b218-9aff71444221))
|
||||
)
|
||||
|
||||
(symbol (lib_id "power:+3V3") (at 94.996 60.833 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (fields_autoplaced)
|
||||
(uuid a216f69b-d762-4c63-943f-36571c08cabf)
|
||||
(property "Reference" "#PWR017" (id 0) (at 94.996 64.643 0)
|
||||
(effects (font (size 1.27 1.27)) hide)
|
||||
)
|
||||
(property "Value" "+3V3" (id 1) (at 94.996 57.2572 0))
|
||||
(property "Footprint" "" (id 2) (at 94.996 60.833 0)
|
||||
(effects (font (size 1.27 1.27)) hide)
|
||||
)
|
||||
(property "Datasheet" "" (id 3) (at 94.996 60.833 0)
|
||||
(effects (font (size 1.27 1.27)) hide)
|
||||
)
|
||||
(pin "1" (uuid 5ce5bf39-a1e8-4708-acb6-a8e633ae7356))
|
||||
)
|
||||
|
||||
(symbol (lib_id "Connector:Conn_01x01_Male") (at 136.779 81.407 180) (unit 1)
|
||||
(in_bom yes) (on_board yes) (fields_autoplaced)
|
||||
(uuid a5775530-a18e-4f83-8d4f-2a5a128645d7)
|
||||
@ -3788,6 +3830,9 @@
|
||||
(path "/153eb370-b202-4674-971f-4d10f8163e7a"
|
||||
(reference "#PWR016") (unit 1) (value "GND") (footprint "")
|
||||
)
|
||||
(path "/a216f69b-d762-4c63-943f-36571c08cabf"
|
||||
(reference "#PWR017") (unit 1) (value "+3V3") (footprint "")
|
||||
)
|
||||
(path "/4bdf2397-8c1b-4e8c-9445-9d74caf700a9"
|
||||
(reference "#PWR0101") (unit 1) (value "+3V3") (footprint "")
|
||||
)
|
||||
@ -3923,6 +3968,9 @@
|
||||
(path "/794eecad-d01e-422c-8c32-56eec85114f2"
|
||||
(reference "R11") (unit 1) (value "4k7") (footprint "Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder")
|
||||
)
|
||||
(path "/0b63ce88-aa3d-4225-9db7-c40346512ac6"
|
||||
(reference "R12") (unit 1) (value "4k7") (footprint "Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder")
|
||||
)
|
||||
(path "/a7aad451-d177-4036-941b-7ff8e9fd7d3a"
|
||||
(reference "U1") (unit 1) (value "STM32F103C6Tx") (footprint "Package_QFP:LQFP-48_7x7mm_P0.5mm")
|
||||
)
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:46+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:35+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Copper,L2,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:46*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -103,25 +103,25 @@ G04 Aperture macros list end*
|
||||
%ADD32RoundRect,0.075000X0.662500X-0.075000X0.662500X0.075000X-0.662500X0.075000X-0.662500X-0.075000X0*%
|
||||
%TD*%
|
||||
%TA.AperFunction,ViaPad*%
|
||||
%ADD33C,0.800000*%
|
||||
%ADD33C,1.200000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,ViaPad*%
|
||||
%ADD34C,1.200000*%
|
||||
%ADD34C,0.700000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,ViaPad*%
|
||||
%ADD35C,0.700000*%
|
||||
%ADD35C,0.800000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%ADD36C,1.000000*%
|
||||
%ADD36C,0.250000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%ADD37C,0.200000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%ADD38C,0.250000*%
|
||||
%ADD38C,0.500000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%ADD39C,0.500000*%
|
||||
%ADD39C,1.000000*%
|
||||
%TD*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
@ -526,47 +526,39 @@ X82250000Y-88940000D03*
|
||||
X82250000Y-89440000D03*
|
||||
%TD*%
|
||||
D33*
|
||||
%TO.N,/Ven*%
|
||||
X112928400Y-56134000D03*
|
||||
%TO.N,/~{OC}*%
|
||||
X115620800Y-56134000D03*
|
||||
%TO.N,/VBUS*%
|
||||
X95021400Y-60133000D03*
|
||||
%TO.N,/CANRX*%
|
||||
X96164400Y-61671200D03*
|
||||
%TO.N,GND*%
|
||||
X117348000Y-57099200D03*
|
||||
%TO.N,/Vlens*%
|
||||
X115570000Y-58064400D03*
|
||||
%TO.N,GND*%
|
||||
X112826800Y-63500000D03*
|
||||
X107035600Y-61417200D03*
|
||||
D34*
|
||||
X109321600Y-58674000D03*
|
||||
X107619800Y-115290600D03*
|
||||
D35*
|
||||
X76708000Y-84342100D03*
|
||||
D34*
|
||||
X99060000Y-56184800D03*
|
||||
X76708000Y-84342100D03*
|
||||
D33*
|
||||
X99060000Y-56184800D03*
|
||||
D35*
|
||||
X112826800Y-63500000D03*
|
||||
X72059800Y-81965800D03*
|
||||
X138658600Y-84658200D03*
|
||||
X77343000Y-92938600D03*
|
||||
X82677000Y-80797400D03*
|
||||
X101057965Y-59820647D03*
|
||||
X131227800Y-72135600D03*
|
||||
X117348000Y-57099200D03*
|
||||
X74904600Y-99949000D03*
|
||||
D33*
|
||||
X109321600Y-58674000D03*
|
||||
D35*
|
||||
X107035600Y-61417200D03*
|
||||
X72085200Y-79349600D03*
|
||||
D34*
|
||||
%TO.N,/VBUS*%
|
||||
X95021400Y-60133000D03*
|
||||
D33*
|
||||
%TO.N,+3V3*%
|
||||
X131064000Y-84886800D03*
|
||||
X80162400Y-86842600D03*
|
||||
D33*
|
||||
D35*
|
||||
X82677000Y-82522400D03*
|
||||
%TO.N,/L_DETECT*%
|
||||
X74218800Y-78892400D03*
|
||||
X76657200Y-80822800D03*
|
||||
D35*
|
||||
D34*
|
||||
%TO.N,/SPI_SCK*%
|
||||
X78587600Y-84429600D03*
|
||||
%TO.N,/SPI_MISO*%
|
||||
@ -577,7 +569,7 @@ X75773200Y-86044200D03*
|
||||
X80822800Y-84277200D03*
|
||||
%TO.N,/SWDIO*%
|
||||
X80822800Y-85344000D03*
|
||||
D33*
|
||||
D35*
|
||||
%TO.N,/BOOT0*%
|
||||
X80445588Y-88464412D03*
|
||||
%TO.N,/NRST*%
|
||||
@ -593,6 +585,10 @@ X81635600Y-78486000D03*
|
||||
%TO.N,/USBDP*%
|
||||
X84023200Y-72542400D03*
|
||||
X82550000Y-78079600D03*
|
||||
%TO.N,/Vlens*%
|
||||
X115570000Y-58064400D03*
|
||||
%TO.N,/CANRX*%
|
||||
X96164400Y-61671200D03*
|
||||
%TO.N,/CANTX*%
|
||||
X93116400Y-62534800D03*
|
||||
%TO.N,/CANL*%
|
||||
@ -600,166 +596,12 @@ X102721437Y-53082163D03*
|
||||
X106900000Y-53212500D03*
|
||||
%TO.N,/CANH*%
|
||||
X104343200Y-53238400D03*
|
||||
%TO.N,/Ven*%
|
||||
X112928400Y-56134000D03*
|
||||
%TO.N,/~{OC}*%
|
||||
X115620800Y-56134000D03*
|
||||
%TD*%
|
||||
D36*
|
||||
%TO.N,/Vlens*%
|
||||
X115570000Y-58064400D02*
|
||||
X115570000Y-62077600D01*
|
||||
X115570000Y-62077600D02*
|
||||
X115570000Y-64560000D01*
|
||||
X106270000Y-64490000D02*
|
||||
X108631600Y-62128400D01*
|
||||
X108631600Y-62128400D02*
|
||||
X115519200Y-62128400D01*
|
||||
X115519200Y-62128400D02*
|
||||
X115570000Y-62077600D01*
|
||||
X115570000Y-64560000D02*
|
||||
X114040000Y-66090000D01*
|
||||
D37*
|
||||
%TO.N,GND*%
|
||||
X107619800Y-115290600D02*
|
||||
X116789200Y-115290600D01*
|
||||
X116789200Y-115290600D02*
|
||||
X138633200Y-93446600D01*
|
||||
X138633200Y-93446600D02*
|
||||
X138633200Y-89560400D01*
|
||||
D38*
|
||||
%TO.N,/Ven*%
|
||||
X92786200Y-57988200D02*
|
||||
X93065600Y-57708800D01*
|
||||
X104698800Y-56946800D02*
|
||||
X105156000Y-56489600D01*
|
||||
X93065600Y-57708800D02*
|
||||
X96824800Y-57708800D01*
|
||||
X96824800Y-57708800D02*
|
||||
X97028000Y-57505600D01*
|
||||
X97028000Y-57505600D02*
|
||||
X102971600Y-57505600D01*
|
||||
X102971600Y-57505600D02*
|
||||
X103530400Y-56946800D01*
|
||||
X103530400Y-56946800D02*
|
||||
X104698800Y-56946800D01*
|
||||
X105156000Y-56489600D02*
|
||||
X112572800Y-56489600D01*
|
||||
X112572800Y-56489600D02*
|
||||
X112928400Y-56134000D01*
|
||||
X90424000Y-60350400D02*
|
||||
X92786200Y-57988200D01*
|
||||
X92786200Y-57988200D02*
|
||||
X92887800Y-57886600D01*
|
||||
X93065600Y-57708800D02*
|
||||
X92887800Y-57886600D01*
|
||||
%TO.N,/~{OC}*%
|
||||
X90830400Y-60553600D02*
|
||||
X90830400Y-64414400D01*
|
||||
X97028000Y-58267600D02*
|
||||
X93116400Y-58267600D01*
|
||||
X93116400Y-58267600D02*
|
||||
X90830400Y-60553600D01*
|
||||
X97332800Y-57962800D02*
|
||||
X97028000Y-58267600D01*
|
||||
X80416400Y-74371200D02*
|
||||
X80416400Y-78638400D01*
|
||||
X113995200Y-56997600D02*
|
||||
X105359200Y-56997600D01*
|
||||
X80416400Y-78638400D02*
|
||||
X78028800Y-81026000D01*
|
||||
X114858800Y-56134000D02*
|
||||
X113995200Y-56997600D01*
|
||||
X115620800Y-56134000D02*
|
||||
X114858800Y-56134000D01*
|
||||
X103174800Y-57962800D02*
|
||||
X97332800Y-57962800D01*
|
||||
X103682800Y-57454800D02*
|
||||
X103174800Y-57962800D01*
|
||||
X104902000Y-57454800D02*
|
||||
X103682800Y-57454800D01*
|
||||
X84429600Y-70358000D02*
|
||||
X80416400Y-74371200D01*
|
||||
X105359200Y-56997600D02*
|
||||
X104902000Y-57454800D01*
|
||||
X90830400Y-64414400D02*
|
||||
X84886800Y-70358000D01*
|
||||
X84886800Y-70358000D02*
|
||||
X84429600Y-70358000D01*
|
||||
%TO.N,GND*%
|
||||
X114757200Y-57099200D02*
|
||||
X117348000Y-57099200D01*
|
||||
X109321600Y-58674000D02*
|
||||
X113182400Y-58674000D01*
|
||||
X113182400Y-58674000D02*
|
||||
X114757200Y-57099200D01*
|
||||
X107035600Y-61417200D02*
|
||||
X107035600Y-60960000D01*
|
||||
X107035600Y-60960000D02*
|
||||
X109321600Y-58674000D01*
|
||||
%TO.N,/Ven*%
|
||||
X77571600Y-80822800D02*
|
||||
X80010000Y-78384400D01*
|
||||
X80010000Y-78384400D02*
|
||||
X80010000Y-74168000D01*
|
||||
X80010000Y-74168000D02*
|
||||
X84226400Y-69951600D01*
|
||||
X84226400Y-69951600D02*
|
||||
X84734400Y-69951600D01*
|
||||
X84734400Y-69951600D02*
|
||||
X90424000Y-64262000D01*
|
||||
X90424000Y-64262000D02*
|
||||
X90424000Y-60350400D01*
|
||||
D37*
|
||||
X77337500Y-82527500D02*
|
||||
X77337500Y-81056900D01*
|
||||
X77337500Y-81056900D02*
|
||||
X77571600Y-80822800D01*
|
||||
%TO.N,/~{OC}*%
|
||||
X77837500Y-82527500D02*
|
||||
X77837500Y-81217300D01*
|
||||
X77837500Y-81217300D02*
|
||||
X78028800Y-81026000D01*
|
||||
D38*
|
||||
%TO.N,/VBUS*%
|
||||
X98392000Y-59817000D02*
|
||||
X95337400Y-59817000D01*
|
||||
X95337400Y-59817000D02*
|
||||
X95021400Y-60133000D01*
|
||||
%TO.N,/USBDM*%
|
||||
X91744800Y-61518800D02*
|
||||
X91744800Y-64770000D01*
|
||||
X98392000Y-60767000D02*
|
||||
X92496600Y-60767000D01*
|
||||
X92496600Y-60767000D02*
|
||||
X91744800Y-61518800D01*
|
||||
%TO.N,/CANRX*%
|
||||
X92506800Y-61671200D02*
|
||||
X96164400Y-61671200D01*
|
||||
X92278200Y-61899800D02*
|
||||
X92506800Y-61671200D01*
|
||||
X92278200Y-64947800D02*
|
||||
X92278200Y-61899800D01*
|
||||
%TO.N,/CANTX*%
|
||||
X86309200Y-78282800D02*
|
||||
X84429600Y-80162400D01*
|
||||
X93116400Y-62534800D02*
|
||||
X93116400Y-65125600D01*
|
||||
X86309200Y-71932800D02*
|
||||
X86309200Y-78282800D01*
|
||||
X93116400Y-65125600D02*
|
||||
X86309200Y-71932800D01*
|
||||
X84429600Y-80162400D02*
|
||||
X84429600Y-82651600D01*
|
||||
X84429600Y-82651600D02*
|
||||
X84226400Y-82854800D01*
|
||||
X84226400Y-82854800D02*
|
||||
X84226400Y-88138000D01*
|
||||
X84226400Y-88138000D02*
|
||||
X84124800Y-88239600D01*
|
||||
%TO.N,GND*%
|
||||
X112826800Y-63500000D02*
|
||||
X110960000Y-63500000D01*
|
||||
D39*
|
||||
X110960000Y-63500000D02*
|
||||
X109640000Y-64820000D01*
|
||||
D38*
|
||||
%TO.N,/OSC_IN*%
|
||||
X78837500Y-94128300D02*
|
||||
X80365600Y-95656400D01*
|
||||
@ -773,24 +615,28 @@ D37*
|
||||
%TO.N,GND*%
|
||||
X84480400Y-102019600D02*
|
||||
X84480400Y-91160600D01*
|
||||
D36*
|
||||
X113182400Y-58674000D02*
|
||||
X114757200Y-57099200D01*
|
||||
D37*
|
||||
X82250000Y-88940000D02*
|
||||
X84012400Y-88940000D01*
|
||||
D38*
|
||||
D36*
|
||||
X104343200Y-51413400D02*
|
||||
X106874100Y-51413400D01*
|
||||
D39*
|
||||
D38*
|
||||
X131227800Y-70608400D02*
|
||||
X132443400Y-69392800D01*
|
||||
D38*
|
||||
D36*
|
||||
X75742800Y-100787200D02*
|
||||
X74904600Y-99949000D01*
|
||||
D37*
|
||||
X77337500Y-90852500D02*
|
||||
X77337500Y-92933100D01*
|
||||
D39*
|
||||
D38*
|
||||
X138658600Y-84658200D02*
|
||||
X138658600Y-89535000D01*
|
||||
D38*
|
||||
D36*
|
||||
X77343000Y-93395800D02*
|
||||
X76708000Y-94030800D01*
|
||||
X71780400Y-92608400D02*
|
||||
@ -800,25 +646,29 @@ X71577200Y-87579200D01*
|
||||
D37*
|
||||
X84012400Y-88940000D02*
|
||||
X84480400Y-89408000D01*
|
||||
D38*
|
||||
D36*
|
||||
X71577200Y-87579200D02*
|
||||
X71780400Y-87782400D01*
|
||||
X82499200Y-98348800D02*
|
||||
X81762600Y-99085400D01*
|
||||
D36*
|
||||
D39*
|
||||
X97310000Y-66260000D02*
|
||||
X97476600Y-66260000D01*
|
||||
D37*
|
||||
X138633200Y-93446600D02*
|
||||
X138633200Y-89560400D01*
|
||||
X81164600Y-102664600D02*
|
||||
X81500000Y-103000000D01*
|
||||
X107619800Y-115290600D02*
|
||||
X116789200Y-115290600D01*
|
||||
X81500000Y-103000000D02*
|
||||
X83500000Y-103000000D01*
|
||||
D39*
|
||||
D38*
|
||||
X131227800Y-72135600D02*
|
||||
X131227800Y-70608400D01*
|
||||
X137693400Y-81203800D02*
|
||||
X138658600Y-82169000D01*
|
||||
D38*
|
||||
D36*
|
||||
X74904600Y-99085400D02*
|
||||
X74904600Y-99949000D01*
|
||||
X72059800Y-83616800D02*
|
||||
@ -829,26 +679,38 @@ X106874100Y-51413400D02*
|
||||
X106900000Y-51387500D01*
|
||||
X99771200Y-60198000D02*
|
||||
X99771200Y-61620400D01*
|
||||
X107035600Y-61417200D02*
|
||||
X107035600Y-60960000D01*
|
||||
X74574400Y-97382500D02*
|
||||
X74904600Y-97712700D01*
|
||||
D37*
|
||||
X80337500Y-82527500D02*
|
||||
X80337500Y-81407300D01*
|
||||
D38*
|
||||
D36*
|
||||
X76610100Y-84440000D02*
|
||||
X76708000Y-84342100D01*
|
||||
X99771200Y-61620400D02*
|
||||
X97310000Y-64081600D01*
|
||||
D39*
|
||||
X109321600Y-58674000D02*
|
||||
X113182400Y-58674000D01*
|
||||
D38*
|
||||
X110960000Y-63500000D02*
|
||||
X109640000Y-64820000D01*
|
||||
D36*
|
||||
X112826800Y-63500000D02*
|
||||
X110960000Y-63500000D01*
|
||||
D38*
|
||||
X138658600Y-89535000D02*
|
||||
X138633200Y-89560400D01*
|
||||
D38*
|
||||
D36*
|
||||
X74904600Y-97712700D02*
|
||||
X74904600Y-99085400D01*
|
||||
X100152200Y-59817000D02*
|
||||
X99771200Y-60198000D01*
|
||||
X97310000Y-64081600D02*
|
||||
X97310000Y-66260000D01*
|
||||
X114757200Y-57099200D02*
|
||||
X117348000Y-57099200D01*
|
||||
X73925000Y-84440000D02*
|
||||
X76610100Y-84440000D01*
|
||||
X71780400Y-87782400D02*
|
||||
@ -856,22 +718,24 @@ X71780400Y-92608400D01*
|
||||
D37*
|
||||
X77337500Y-92933100D02*
|
||||
X77343000Y-92938600D01*
|
||||
D38*
|
||||
D36*
|
||||
X81762600Y-99085400D02*
|
||||
X74904600Y-99085400D01*
|
||||
D37*
|
||||
X116789200Y-115290600D02*
|
||||
X138633200Y-93446600D01*
|
||||
X80337500Y-81407300D02*
|
||||
X80947400Y-80797400D01*
|
||||
D38*
|
||||
D36*
|
||||
X101092000Y-59817000D02*
|
||||
X100152200Y-59817000D01*
|
||||
D37*
|
||||
X83500000Y-103000000D02*
|
||||
X84480400Y-102019600D01*
|
||||
D39*
|
||||
D38*
|
||||
X138658600Y-82169000D02*
|
||||
X138658600Y-84658200D01*
|
||||
D38*
|
||||
D36*
|
||||
X77343000Y-92938600D02*
|
||||
X77343000Y-93395800D01*
|
||||
D37*
|
||||
@ -879,19 +743,21 @@ X80947400Y-80797400D02*
|
||||
X82677000Y-80797400D01*
|
||||
X84480400Y-89408000D02*
|
||||
X84480400Y-91160600D01*
|
||||
D38*
|
||||
D36*
|
||||
X72059800Y-81965800D02*
|
||||
X72059800Y-83616800D01*
|
||||
D39*
|
||||
D38*
|
||||
X135305800Y-81203800D02*
|
||||
X137693400Y-81203800D01*
|
||||
D38*
|
||||
D36*
|
||||
X73202800Y-94030800D02*
|
||||
X76708000Y-94030800D01*
|
||||
D37*
|
||||
X81164600Y-100787200D02*
|
||||
X81164600Y-102664600D01*
|
||||
D38*
|
||||
D36*
|
||||
X107035600Y-60960000D02*
|
||||
X109321600Y-58674000D01*
|
||||
X72883000Y-84440000D02*
|
||||
X73925000Y-84440000D01*
|
||||
X82499200Y-97382500D02*
|
||||
@ -905,7 +771,7 @@ X78337500Y-93984500D02*
|
||||
X76665600Y-95656400D01*
|
||||
X76664500Y-95657500D02*
|
||||
X76665600Y-95656400D01*
|
||||
D36*
|
||||
D39*
|
||||
%TO.N,/VBUS*%
|
||||
X134518400Y-67792600D02*
|
||||
X134289800Y-67564000D01*
|
||||
@ -915,25 +781,31 @@ X135827800Y-72135600D02*
|
||||
X135827800Y-70702200D01*
|
||||
X135827800Y-70702200D02*
|
||||
X134518400Y-69392800D01*
|
||||
D36*
|
||||
X95337400Y-59817000D02*
|
||||
X95021400Y-60133000D01*
|
||||
X98392000Y-59817000D02*
|
||||
X95337400Y-59817000D01*
|
||||
D39*
|
||||
X134289800Y-67564000D02*
|
||||
X129006600Y-67564000D01*
|
||||
X129006600Y-67564000D02*
|
||||
X127609600Y-68961000D01*
|
||||
X134518400Y-69392800D02*
|
||||
X134518400Y-67792600D01*
|
||||
D39*
|
||||
D38*
|
||||
%TO.N,+3V3*%
|
||||
X80162400Y-86842600D02*
|
||||
X79578200Y-87426800D01*
|
||||
D38*
|
||||
D36*
|
||||
X78790800Y-83667600D02*
|
||||
X79262600Y-84139400D01*
|
||||
D36*
|
||||
D39*
|
||||
X133558600Y-84658200D02*
|
||||
X133558600Y-81226000D01*
|
||||
X133330000Y-84886800D02*
|
||||
X133558600Y-84658200D01*
|
||||
D38*
|
||||
D36*
|
||||
X77825600Y-88544400D02*
|
||||
X77622400Y-88544400D01*
|
||||
X77622400Y-88544400D02*
|
||||
@ -944,13 +816,13 @@ X79262600Y-84139400D02*
|
||||
X79262600Y-84952200D01*
|
||||
X79578200Y-89179400D02*
|
||||
X79838800Y-89440000D01*
|
||||
D36*
|
||||
D39*
|
||||
X131064000Y-84886800D02*
|
||||
X133330000Y-84886800D01*
|
||||
D37*
|
||||
X76837500Y-91767700D02*
|
||||
X76837500Y-90852500D01*
|
||||
D36*
|
||||
D39*
|
||||
X133580800Y-78488600D02*
|
||||
X133527800Y-78435600D01*
|
||||
D37*
|
||||
@ -958,21 +830,21 @@ X75666600Y-92938600D02*
|
||||
X76837500Y-91767700D01*
|
||||
X82250000Y-89440000D02*
|
||||
X81044800Y-89440000D01*
|
||||
D36*
|
||||
D39*
|
||||
X133558600Y-81226000D02*
|
||||
X133580800Y-81203800D01*
|
||||
D37*
|
||||
X80837500Y-82527500D02*
|
||||
X82671900Y-82527500D01*
|
||||
D39*
|
||||
D38*
|
||||
X79578200Y-87426800D02*
|
||||
X79578200Y-88544400D01*
|
||||
D38*
|
||||
D36*
|
||||
X75488800Y-83667600D02*
|
||||
X78790800Y-83667600D01*
|
||||
X79262600Y-84952200D02*
|
||||
X80162400Y-85852000D01*
|
||||
D39*
|
||||
D38*
|
||||
X133558600Y-84658200D02*
|
||||
X133558600Y-89351800D01*
|
||||
X133558600Y-89351800D02*
|
||||
@ -982,13 +854,13 @@ X76837500Y-89329300D02*
|
||||
X76837500Y-90852500D01*
|
||||
X73784800Y-83799800D02*
|
||||
X73925000Y-83940000D01*
|
||||
D39*
|
||||
D38*
|
||||
X133527800Y-72135600D02*
|
||||
X133527800Y-78435600D01*
|
||||
D37*
|
||||
X81044800Y-89440000D02*
|
||||
X80837500Y-89647300D01*
|
||||
D38*
|
||||
D36*
|
||||
X75216400Y-83940000D02*
|
||||
X75488800Y-83667600D01*
|
||||
X83474800Y-81724600D02*
|
||||
@ -1000,19 +872,19 @@ X80837500Y-89647300D02*
|
||||
X80837500Y-90852500D01*
|
||||
X75618000Y-92938600D02*
|
||||
X75666600Y-92938600D01*
|
||||
D38*
|
||||
D36*
|
||||
X73925000Y-83940000D02*
|
||||
X75216400Y-83940000D01*
|
||||
D37*
|
||||
X82250000Y-90655200D02*
|
||||
X82755400Y-91160600D01*
|
||||
D39*
|
||||
D38*
|
||||
X79578200Y-88544400D02*
|
||||
X79578200Y-89179400D01*
|
||||
D38*
|
||||
D36*
|
||||
X83474800Y-77022000D02*
|
||||
X83474800Y-81724600D01*
|
||||
D36*
|
||||
D39*
|
||||
X133580800Y-81203800D02*
|
||||
X133580800Y-78488600D01*
|
||||
D37*
|
||||
@ -1020,7 +892,7 @@ X82250000Y-89440000D02*
|
||||
X82250000Y-90655200D01*
|
||||
X73784800Y-81965800D02*
|
||||
X73784800Y-83799800D01*
|
||||
D38*
|
||||
D36*
|
||||
X79578200Y-88544400D02*
|
||||
X77825600Y-88544400D01*
|
||||
%TO.N,/L_DETECT*%
|
||||
@ -1081,7 +953,7 @@ X81470000Y-87440000D02*
|
||||
X80445588Y-88464412D01*
|
||||
X82250000Y-87440000D02*
|
||||
X81470000Y-87440000D01*
|
||||
D38*
|
||||
D36*
|
||||
%TO.N,/NRST*%
|
||||
X77837500Y-89572300D02*
|
||||
X77825600Y-89560400D01*
|
||||
@ -1116,8 +988,10 @@ X103481500Y-61087000D02*
|
||||
X103161500Y-60767000D01*
|
||||
X103161500Y-60767000D02*
|
||||
X101092000Y-60767000D01*
|
||||
D38*
|
||||
D36*
|
||||
%TO.N,/USBDM*%
|
||||
X92496600Y-60767000D02*
|
||||
X91744800Y-61518800D01*
|
||||
X84836000Y-71678800D02*
|
||||
X84747700Y-71678800D01*
|
||||
D37*
|
||||
@ -1125,13 +999,17 @@ X78837500Y-81662500D02*
|
||||
X78837500Y-82527500D01*
|
||||
X81635600Y-78864400D02*
|
||||
X78837500Y-81662500D01*
|
||||
D38*
|
||||
D36*
|
||||
X98392000Y-60767000D02*
|
||||
X92496600Y-60767000D01*
|
||||
X91744800Y-64770000D02*
|
||||
X84836000Y-71678800D01*
|
||||
X91744800Y-61518800D02*
|
||||
X91744800Y-64770000D01*
|
||||
D37*
|
||||
X81635600Y-78864400D02*
|
||||
X81635600Y-78486000D01*
|
||||
D38*
|
||||
D36*
|
||||
%TO.N,/USBDP*%
|
||||
X84480400Y-70967600D02*
|
||||
X84023200Y-71424800D01*
|
||||
@ -1148,7 +1026,7 @@ X81974800Y-76757200D01*
|
||||
D37*
|
||||
X79337500Y-82527500D02*
|
||||
X79337500Y-81723900D01*
|
||||
D38*
|
||||
D36*
|
||||
X91236800Y-60830596D02*
|
||||
X91236800Y-64617600D01*
|
||||
X98392000Y-58867000D02*
|
||||
@ -1156,7 +1034,7 @@ X93200395Y-58867000D01*
|
||||
D37*
|
||||
X79337500Y-81723900D02*
|
||||
X82410300Y-78651100D01*
|
||||
D38*
|
||||
D36*
|
||||
X82550000Y-78511400D02*
|
||||
X82550000Y-78079600D01*
|
||||
X93200395Y-58867000D02*
|
||||
@ -1164,14 +1042,43 @@ X91236800Y-60830596D01*
|
||||
D37*
|
||||
X82550000Y-78511400D02*
|
||||
X82410300Y-78651100D01*
|
||||
D38*
|
||||
D39*
|
||||
%TO.N,/Vlens*%
|
||||
X115570000Y-62077600D02*
|
||||
X115570000Y-64560000D01*
|
||||
X115570000Y-64560000D02*
|
||||
X114040000Y-66090000D01*
|
||||
X115570000Y-58064400D02*
|
||||
X115570000Y-62077600D01*
|
||||
X108631600Y-62128400D02*
|
||||
X115519200Y-62128400D01*
|
||||
X115519200Y-62128400D02*
|
||||
X115570000Y-62077600D01*
|
||||
X106270000Y-64490000D02*
|
||||
X108631600Y-62128400D01*
|
||||
D36*
|
||||
%TO.N,Net-(JP1-Pad2)*%
|
||||
X83769200Y-94589600D02*
|
||||
X81991200Y-92811600D01*
|
||||
X81991200Y-92811600D02*
|
||||
X80924400Y-92811600D01*
|
||||
X80337500Y-92224700D02*
|
||||
X80337500Y-90852500D01*
|
||||
X82614600Y-100787200D02*
|
||||
X83464400Y-100787200D01*
|
||||
X80924400Y-92811600D02*
|
||||
X80337500Y-92224700D01*
|
||||
X83464400Y-100787200D02*
|
||||
X83769200Y-100482400D01*
|
||||
X83769200Y-100482400D02*
|
||||
X83769200Y-94589600D01*
|
||||
%TO.N,/USB_PU*%
|
||||
X81330800Y-75844400D02*
|
||||
X84277200Y-75844400D01*
|
||||
D37*
|
||||
X78337500Y-82527500D02*
|
||||
X78337500Y-81562500D01*
|
||||
D38*
|
||||
D36*
|
||||
X84774800Y-76342000D02*
|
||||
X84774800Y-77022000D01*
|
||||
X80850000Y-79050000D02*
|
||||
@ -1183,7 +1090,7 @@ X81330800Y-75844400D01*
|
||||
D37*
|
||||
X78337500Y-81562500D02*
|
||||
X80850000Y-79050000D01*
|
||||
D38*
|
||||
D36*
|
||||
%TO.N,Net-(Q1-Pad3)*%
|
||||
X84124800Y-74362000D02*
|
||||
X82545000Y-74362000D01*
|
||||
@ -1203,18 +1110,44 @@ X85750400Y-71475600D01*
|
||||
D37*
|
||||
X83256000Y-87940000D02*
|
||||
X83718400Y-87477600D01*
|
||||
D38*
|
||||
D36*
|
||||
X85750400Y-78130400D02*
|
||||
X83972400Y-79908400D01*
|
||||
X92278200Y-61899800D02*
|
||||
X92506800Y-61671200D01*
|
||||
D37*
|
||||
X82250000Y-87940000D02*
|
||||
X83256000Y-87940000D01*
|
||||
D36*
|
||||
X92278200Y-64947800D02*
|
||||
X92278200Y-61899800D01*
|
||||
X92506800Y-61671200D02*
|
||||
X96164400Y-61671200D01*
|
||||
%TO.N,/CANTX*%
|
||||
X84226400Y-88138000D02*
|
||||
X84124800Y-88239600D01*
|
||||
X86309200Y-78282800D02*
|
||||
X84429600Y-80162400D01*
|
||||
X93116400Y-65125600D02*
|
||||
X86309200Y-71932800D01*
|
||||
D37*
|
||||
X83924400Y-88440000D02*
|
||||
X84124800Y-88239600D01*
|
||||
D36*
|
||||
X84429600Y-80162400D02*
|
||||
X84429600Y-82651600D01*
|
||||
X86309200Y-71932800D02*
|
||||
X86309200Y-78282800D01*
|
||||
X84226400Y-82854800D02*
|
||||
X84226400Y-88138000D01*
|
||||
D37*
|
||||
X82250000Y-88440000D02*
|
||||
X83924400Y-88440000D01*
|
||||
D38*
|
||||
D36*
|
||||
X84429600Y-82651600D02*
|
||||
X84226400Y-82854800D01*
|
||||
X93116400Y-62534800D02*
|
||||
X93116400Y-65125600D01*
|
||||
%TO.N,/CANL*%
|
||||
X105562400Y-52374800D02*
|
||||
X103428800Y-52374800D01*
|
||||
@ -1224,21 +1157,92 @@ X103428800Y-52374800D02*
|
||||
X102721437Y-53082163D01*
|
||||
X106400100Y-53212500D02*
|
||||
X105562400Y-52374800D01*
|
||||
%TO.N,Net-(JP1-Pad2)*%
|
||||
X83769200Y-94589600D02*
|
||||
X81991200Y-92811600D01*
|
||||
X81991200Y-92811600D02*
|
||||
X80924400Y-92811600D01*
|
||||
X80337500Y-92224700D02*
|
||||
X80337500Y-90852500D01*
|
||||
X82614600Y-100787200D02*
|
||||
X83464400Y-100787200D01*
|
||||
X80924400Y-92811600D02*
|
||||
X80337500Y-92224700D01*
|
||||
X83464400Y-100787200D02*
|
||||
X83769200Y-100482400D01*
|
||||
X83769200Y-100482400D02*
|
||||
X83769200Y-94589600D01*
|
||||
%TO.N,/Ven*%
|
||||
X92786200Y-57988200D02*
|
||||
X92887800Y-57886600D01*
|
||||
X105156000Y-56489600D02*
|
||||
X112572800Y-56489600D01*
|
||||
D37*
|
||||
X77337500Y-81056900D02*
|
||||
X77571600Y-80822800D01*
|
||||
D36*
|
||||
X112572800Y-56489600D02*
|
||||
X112928400Y-56134000D01*
|
||||
X77571600Y-80822800D02*
|
||||
X80010000Y-78384400D01*
|
||||
X96824800Y-57708800D02*
|
||||
X97028000Y-57505600D01*
|
||||
X103530400Y-56946800D02*
|
||||
X104698800Y-56946800D01*
|
||||
X84226400Y-69951600D02*
|
||||
X84734400Y-69951600D01*
|
||||
X80010000Y-74168000D02*
|
||||
X84226400Y-69951600D01*
|
||||
X93065600Y-57708800D02*
|
||||
X96824800Y-57708800D01*
|
||||
X92786200Y-57988200D02*
|
||||
X93065600Y-57708800D01*
|
||||
X93065600Y-57708800D02*
|
||||
X92887800Y-57886600D01*
|
||||
X90424000Y-64262000D02*
|
||||
X90424000Y-60350400D01*
|
||||
X97028000Y-57505600D02*
|
||||
X102971600Y-57505600D01*
|
||||
X102971600Y-57505600D02*
|
||||
X103530400Y-56946800D01*
|
||||
X80010000Y-78384400D02*
|
||||
X80010000Y-74168000D01*
|
||||
X104698800Y-56946800D02*
|
||||
X105156000Y-56489600D01*
|
||||
D37*
|
||||
X77337500Y-82527500D02*
|
||||
X77337500Y-81056900D01*
|
||||
D36*
|
||||
X84734400Y-69951600D02*
|
||||
X90424000Y-64262000D01*
|
||||
X90424000Y-60350400D02*
|
||||
X92786200Y-57988200D01*
|
||||
%TO.N,/~{OC}*%
|
||||
X97028000Y-58267600D02*
|
||||
X93116400Y-58267600D01*
|
||||
X114858800Y-56134000D02*
|
||||
X113995200Y-56997600D01*
|
||||
X105359200Y-56997600D02*
|
||||
X104902000Y-57454800D01*
|
||||
X80416400Y-78638400D02*
|
||||
X78028800Y-81026000D01*
|
||||
X90830400Y-60553600D02*
|
||||
X90830400Y-64414400D01*
|
||||
D37*
|
||||
X77837500Y-81217300D02*
|
||||
X78028800Y-81026000D01*
|
||||
D36*
|
||||
X115620800Y-56134000D02*
|
||||
X114858800Y-56134000D01*
|
||||
X104902000Y-57454800D02*
|
||||
X103682800Y-57454800D01*
|
||||
X84429600Y-70358000D02*
|
||||
X80416400Y-74371200D01*
|
||||
X103682800Y-57454800D02*
|
||||
X103174800Y-57962800D01*
|
||||
X90830400Y-64414400D02*
|
||||
X84886800Y-70358000D01*
|
||||
D37*
|
||||
X77837500Y-82527500D02*
|
||||
X77837500Y-81217300D01*
|
||||
D36*
|
||||
X84886800Y-70358000D02*
|
||||
X84429600Y-70358000D01*
|
||||
X103174800Y-57962800D02*
|
||||
X97332800Y-57962800D01*
|
||||
X97332800Y-57962800D02*
|
||||
X97028000Y-58267600D01*
|
||||
X93116400Y-58267600D02*
|
||||
X90830400Y-60553600D01*
|
||||
X113995200Y-56997600D02*
|
||||
X105359200Y-56997600D01*
|
||||
X80416400Y-74371200D02*
|
||||
X80416400Y-78638400D01*
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%TO.N,GND*%
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:46+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:35+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Soldermask,Bot*%
|
||||
%TF.FilePolarity,Negative*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:46*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -33,8 +33,8 @@ G04 Aperture macros list*
|
||||
%AMFreePoly1*
|
||||
4,1,6,0.500000,-0.750000,-0.650000,-0.750000,-0.150000,0.000000,-0.650000,0.750000,0.500000,0.750000,0.500000,-0.750000,0.500000,-0.750000,$1*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10C,2.000000*%
|
||||
%ADD11C,3.200000*%
|
||||
%ADD10C,3.200000*%
|
||||
%ADD11C,2.000000*%
|
||||
%ADD12C,0.650000*%
|
||||
%ADD13O,1.000000X2.100000*%
|
||||
%ADD14O,1.000000X1.600000*%
|
||||
@ -60,17 +60,22 @@ G04 Aperture macros list end*
|
||||
%ADD34RoundRect,0.075000X0.662500X-0.075000X0.662500X0.075000X-0.662500X0.075000X-0.662500X-0.075000X0*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,J6*%
|
||||
X103980000Y-64570000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,H4*%
|
||||
X86050000Y-63225000D03*
|
||||
%TD*%
|
||||
%TO.C,H3*%
|
||||
X125880000Y-63225000D03*
|
||||
%TD*%
|
||||
%TO.C,H2*%
|
||||
X86050000Y-110665000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,H1*%
|
||||
X125880000Y-110665000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,J6*%
|
||||
X103980000Y-64570000D03*
|
||||
%TD*%
|
||||
%TO.C,J3*%
|
||||
X111930000Y-65330000D03*
|
||||
%TD*%
|
||||
@ -95,18 +100,9 @@ X109930000Y-50420000D03*
|
||||
X101290000Y-50420000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,H3*%
|
||||
X86050000Y-63225000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J2*%
|
||||
X114040000Y-66090000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,H1*%
|
||||
X125880000Y-110665000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J7*%
|
||||
X101700000Y-64910000D03*
|
||||
%TD*%
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:46+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:35+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Paste,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:46*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:46+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:35+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Legend,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:46*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:46+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:35+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Profile,NP*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:46*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:46+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:35+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Soldermask,Top*%
|
||||
%TF.FilePolarity,Negative*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:46*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -29,12 +29,12 @@ G04 Aperture macros list*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10R,1.560000X0.650000*%
|
||||
%ADD11C,2.000000*%
|
||||
%ADD12C,3.200000*%
|
||||
%ADD13RoundRect,0.150000X-0.150000X0.512500X-0.150000X-0.512500X0.150000X-0.512500X0.150000X0.512500X0*%
|
||||
%ADD14RoundRect,0.150000X0.150000X-0.825000X0.150000X0.825000X-0.150000X0.825000X-0.150000X-0.825000X0*%
|
||||
%ADD15RoundRect,0.237500X0.237500X-0.250000X0.237500X0.250000X-0.237500X0.250000X-0.237500X-0.250000X0*%
|
||||
%ADD10RoundRect,0.237500X0.237500X-0.250000X0.237500X0.250000X-0.237500X0.250000X-0.237500X-0.250000X0*%
|
||||
%ADD11C,3.200000*%
|
||||
%ADD12C,2.000000*%
|
||||
%ADD13R,1.560000X0.650000*%
|
||||
%ADD14RoundRect,0.150000X-0.150000X0.512500X-0.150000X-0.512500X0.150000X-0.512500X0.150000X0.512500X0*%
|
||||
%ADD15RoundRect,0.150000X0.150000X-0.825000X0.150000X0.825000X-0.150000X0.825000X-0.150000X-0.825000X0*%
|
||||
%ADD16C,0.650000*%
|
||||
%ADD17R,0.600000X1.450000*%
|
||||
%ADD18R,0.300000X1.450000*%
|
||||
@ -46,6 +46,28 @@ G04 Aperture macros list end*
|
||||
%ADD24RoundRect,0.237500X0.250000X0.237500X-0.250000X0.237500X-0.250000X-0.237500X0.250000X-0.237500X0*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,R12*%
|
||||
X81026000Y-82597000D03*
|
||||
X81026000Y-80772000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,H4*%
|
||||
X86050000Y-63225000D03*
|
||||
%TD*%
|
||||
%TO.C,H3*%
|
||||
X125880000Y-63225000D03*
|
||||
%TD*%
|
||||
%TO.C,H2*%
|
||||
X86050000Y-110665000D03*
|
||||
%TD*%
|
||||
%TO.C,H1*%
|
||||
X125880000Y-110665000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,J6*%
|
||||
X103980000Y-64570000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
%TO.C,U5*%
|
||||
X115620800Y-58049200D03*
|
||||
X115620800Y-57099200D03*
|
||||
@ -53,18 +75,7 @@ X115620800Y-56149200D03*
|
||||
X112920800Y-56149200D03*
|
||||
X112920800Y-58049200D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,J6*%
|
||||
X103980000Y-64570000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,H4*%
|
||||
X125880000Y-63225000D03*
|
||||
%TD*%
|
||||
%TO.C,H2*%
|
||||
X86050000Y-110665000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,J3*%
|
||||
X111930000Y-65330000D03*
|
||||
%TD*%
|
||||
@ -74,7 +85,7 @@ X109640000Y-64820000D03*
|
||||
%TO.C,J8*%
|
||||
X99500000Y-65500000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
D14*
|
||||
%TO.C,D1*%
|
||||
X77673200Y-83769200D03*
|
||||
X76723200Y-83769200D03*
|
||||
@ -82,7 +93,7 @@ X75773200Y-83769200D03*
|
||||
X75773200Y-86044200D03*
|
||||
X77673200Y-86044200D03*
|
||||
%TD*%
|
||||
D14*
|
||||
D15*
|
||||
%TO.C,U4*%
|
||||
X92481400Y-60133000D03*
|
||||
X93751400Y-60133000D03*
|
||||
@ -93,11 +104,11 @@ X95021400Y-55183000D03*
|
||||
X93751400Y-55183000D03*
|
||||
X92481400Y-55183000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
D12*
|
||||
%TO.C,J9*%
|
||||
X97310000Y-66260000D03*
|
||||
%TD*%
|
||||
D15*
|
||||
D10*
|
||||
%TO.C,R3*%
|
||||
X75776666Y-78890500D03*
|
||||
X75776666Y-77065500D03*
|
||||
@ -135,27 +146,18 @@ X109930000Y-50420000D03*
|
||||
X101290000Y-50420000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,H3*%
|
||||
X86050000Y-63225000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,J2*%
|
||||
X114040000Y-66090000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,H1*%
|
||||
X125880000Y-110665000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,J7*%
|
||||
X101700000Y-64910000D03*
|
||||
%TD*%
|
||||
D15*
|
||||
D10*
|
||||
%TO.C,R4*%
|
||||
X77334532Y-78890500D03*
|
||||
X77334532Y-77065500D03*
|
||||
%TD*%
|
||||
D11*
|
||||
D12*
|
||||
%TO.C,J5*%
|
||||
X106270000Y-64490000D03*
|
||||
%TD*%
|
||||
@ -163,7 +165,7 @@ D21*
|
||||
%TO.C,J35*%
|
||||
X138633200Y-89560400D03*
|
||||
%TD*%
|
||||
D15*
|
||||
D10*
|
||||
%TO.C,R2*%
|
||||
X74218800Y-78890500D03*
|
||||
X74218800Y-77065500D03*
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:46+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:35+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Paste,Top*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:46*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -29,15 +29,20 @@ G04 Aperture macros list*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10R,1.560000X0.650000*%
|
||||
%ADD11RoundRect,0.150000X-0.150000X0.512500X-0.150000X-0.512500X0.150000X-0.512500X0.150000X0.512500X0*%
|
||||
%ADD12RoundRect,0.150000X0.150000X-0.825000X0.150000X0.825000X-0.150000X0.825000X-0.150000X-0.825000X0*%
|
||||
%ADD13RoundRect,0.237500X0.237500X-0.250000X0.237500X0.250000X-0.237500X0.250000X-0.237500X-0.250000X0*%
|
||||
%ADD10RoundRect,0.237500X0.237500X-0.250000X0.237500X0.250000X-0.237500X0.250000X-0.237500X-0.250000X0*%
|
||||
%ADD11R,1.560000X0.650000*%
|
||||
%ADD12RoundRect,0.150000X-0.150000X0.512500X-0.150000X-0.512500X0.150000X-0.512500X0.150000X0.512500X0*%
|
||||
%ADD13RoundRect,0.150000X0.150000X-0.825000X0.150000X0.825000X-0.150000X0.825000X-0.150000X-0.825000X0*%
|
||||
%ADD14R,0.600000X1.450000*%
|
||||
%ADD15R,0.300000X1.450000*%
|
||||
%ADD16RoundRect,0.237500X0.250000X0.237500X-0.250000X0.237500X-0.250000X-0.237500X0.250000X-0.237500X0*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,R12*%
|
||||
X81026000Y-82597000D03*
|
||||
X81026000Y-80772000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,U5*%
|
||||
X115620800Y-58049200D03*
|
||||
X115620800Y-57099200D03*
|
||||
@ -45,7 +50,7 @@ X115620800Y-56149200D03*
|
||||
X112920800Y-56149200D03*
|
||||
X112920800Y-58049200D03*
|
||||
%TD*%
|
||||
D11*
|
||||
D12*
|
||||
%TO.C,D1*%
|
||||
X77673200Y-83769200D03*
|
||||
X76723200Y-83769200D03*
|
||||
@ -53,7 +58,7 @@ X75773200Y-83769200D03*
|
||||
X75773200Y-86044200D03*
|
||||
X77673200Y-86044200D03*
|
||||
%TD*%
|
||||
D12*
|
||||
D13*
|
||||
%TO.C,U4*%
|
||||
X92481400Y-60133000D03*
|
||||
X93751400Y-60133000D03*
|
||||
@ -64,7 +69,7 @@ X95021400Y-55183000D03*
|
||||
X93751400Y-55183000D03*
|
||||
X92481400Y-55183000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
D10*
|
||||
%TO.C,R3*%
|
||||
X75776666Y-78890500D03*
|
||||
X75776666Y-77065500D03*
|
||||
@ -92,7 +97,7 @@ D14*
|
||||
X108060000Y-55515000D03*
|
||||
X108860000Y-55515000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
D10*
|
||||
%TO.C,R4*%
|
||||
X77334532Y-78890500D03*
|
||||
X77334532Y-77065500D03*
|
||||
|
||||
@ -1,21 +1,409 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:46+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:35+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Legend,Top*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:46*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.400000*%
|
||||
%ADD11C,0.150000*%
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11C,0.400000*%
|
||||
%ADD12C,0.120000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X72728776Y-88035809D02*
|
||||
X72871633Y-88073904D01*
|
||||
X73109728Y-88073904D01*
|
||||
X73204966Y-88035809D01*
|
||||
X73252585Y-87997714D01*
|
||||
X73300204Y-87921523D01*
|
||||
X73300204Y-87845333D01*
|
||||
X73252585Y-87769142D01*
|
||||
X73204966Y-87731047D01*
|
||||
X73109728Y-87692952D01*
|
||||
X72919252Y-87654857D01*
|
||||
X72824014Y-87616761D01*
|
||||
X72776395Y-87578666D01*
|
||||
X72728776Y-87502476D01*
|
||||
X72728776Y-87426285D01*
|
||||
X72776395Y-87350095D01*
|
||||
X72824014Y-87312000D01*
|
||||
X72919252Y-87273904D01*
|
||||
X73157347Y-87273904D01*
|
||||
X73300204Y-87312000D01*
|
||||
X73633538Y-87273904D02*
|
||||
X73871633Y-88073904D01*
|
||||
X74062109Y-87502476D01*
|
||||
X74252585Y-88073904D01*
|
||||
X74490680Y-87273904D01*
|
||||
X75443061Y-87997714D02*
|
||||
X75395442Y-88035809D01*
|
||||
X75252585Y-88073904D01*
|
||||
X75157347Y-88073904D01*
|
||||
X75014490Y-88035809D01*
|
||||
X74919252Y-87959619D01*
|
||||
X74871633Y-87883428D01*
|
||||
X74824014Y-87731047D01*
|
||||
X74824014Y-87616761D01*
|
||||
X74871633Y-87464380D01*
|
||||
X74919252Y-87388190D01*
|
||||
X75014490Y-87312000D01*
|
||||
X75157347Y-87273904D01*
|
||||
X75252585Y-87273904D01*
|
||||
X75395442Y-87312000D01*
|
||||
X75443061Y-87350095D01*
|
||||
X76347823Y-88073904D02*
|
||||
X75871633Y-88073904D01*
|
||||
X75871633Y-87273904D01*
|
||||
X76681157Y-88073904D02*
|
||||
X76681157Y-87273904D01*
|
||||
X77252585Y-88073904D02*
|
||||
X76824014Y-87616761D01*
|
||||
X77252585Y-87273904D02*
|
||||
X76681157Y-87731047D01*
|
||||
X72728776Y-89323809D02*
|
||||
X72871633Y-89361904D01*
|
||||
X73109728Y-89361904D01*
|
||||
X73204966Y-89323809D01*
|
||||
X73252585Y-89285714D01*
|
||||
X73300204Y-89209523D01*
|
||||
X73300204Y-89133333D01*
|
||||
X73252585Y-89057142D01*
|
||||
X73204966Y-89019047D01*
|
||||
X73109728Y-88980952D01*
|
||||
X72919252Y-88942857D01*
|
||||
X72824014Y-88904761D01*
|
||||
X72776395Y-88866666D01*
|
||||
X72728776Y-88790476D01*
|
||||
X72728776Y-88714285D01*
|
||||
X72776395Y-88638095D01*
|
||||
X72824014Y-88600000D01*
|
||||
X72919252Y-88561904D01*
|
||||
X73157347Y-88561904D01*
|
||||
X73300204Y-88600000D01*
|
||||
X73633538Y-88561904D02*
|
||||
X73871633Y-89361904D01*
|
||||
X74062109Y-88790476D01*
|
||||
X74252585Y-89361904D01*
|
||||
X74490680Y-88561904D01*
|
||||
X74871633Y-89361904D02*
|
||||
X74871633Y-88561904D01*
|
||||
X75109728Y-88561904D01*
|
||||
X75252585Y-88600000D01*
|
||||
X75347823Y-88676190D01*
|
||||
X75395442Y-88752380D01*
|
||||
X75443061Y-88904761D01*
|
||||
X75443061Y-89019047D01*
|
||||
X75395442Y-89171428D01*
|
||||
X75347823Y-89247619D01*
|
||||
X75252585Y-89323809D01*
|
||||
X75109728Y-89361904D01*
|
||||
X74871633Y-89361904D01*
|
||||
X75871633Y-89361904D02*
|
||||
X75871633Y-88561904D01*
|
||||
X76538300Y-88561904D02*
|
||||
X76728776Y-88561904D01*
|
||||
X76824014Y-88600000D01*
|
||||
X76919252Y-88676190D01*
|
||||
X76966871Y-88828571D01*
|
||||
X76966871Y-89095238D01*
|
||||
X76919252Y-89247619D01*
|
||||
X76824014Y-89323809D01*
|
||||
X76728776Y-89361904D01*
|
||||
X76538300Y-89361904D01*
|
||||
X76443061Y-89323809D01*
|
||||
X76347823Y-89247619D01*
|
||||
X76300204Y-89095238D01*
|
||||
X76300204Y-88828571D01*
|
||||
X76347823Y-88676190D01*
|
||||
X76443061Y-88600000D01*
|
||||
X76538300Y-88561904D01*
|
||||
X73300204Y-89888000D02*
|
||||
X73204966Y-89849904D01*
|
||||
X73062109Y-89849904D01*
|
||||
X72919252Y-89888000D01*
|
||||
X72824014Y-89964190D01*
|
||||
X72776395Y-90040380D01*
|
||||
X72728776Y-90192761D01*
|
||||
X72728776Y-90307047D01*
|
||||
X72776395Y-90459428D01*
|
||||
X72824014Y-90535619D01*
|
||||
X72919252Y-90611809D01*
|
||||
X73062109Y-90649904D01*
|
||||
X73157347Y-90649904D01*
|
||||
X73300204Y-90611809D01*
|
||||
X73347823Y-90573714D01*
|
||||
X73347823Y-90307047D01*
|
||||
X73157347Y-90307047D01*
|
||||
X73776395Y-90649904D02*
|
||||
X73776395Y-89849904D01*
|
||||
X74347823Y-90649904D01*
|
||||
X74347823Y-89849904D01*
|
||||
X74824014Y-90649904D02*
|
||||
X74824014Y-89849904D01*
|
||||
X75062109Y-89849904D01*
|
||||
X75204966Y-89888000D01*
|
||||
X75300204Y-89964190D01*
|
||||
X75347823Y-90040380D01*
|
||||
X75395442Y-90192761D01*
|
||||
X75395442Y-90307047D01*
|
||||
X75347823Y-90459428D01*
|
||||
X75300204Y-90535619D01*
|
||||
X75204966Y-90611809D01*
|
||||
X75062109Y-90649904D01*
|
||||
X74824014Y-90649904D01*
|
||||
X72681157Y-91137904D02*
|
||||
X73300204Y-91137904D01*
|
||||
X72966871Y-91442666D01*
|
||||
X73109728Y-91442666D01*
|
||||
X73204966Y-91480761D01*
|
||||
X73252585Y-91518857D01*
|
||||
X73300204Y-91595047D01*
|
||||
X73300204Y-91785523D01*
|
||||
X73252585Y-91861714D01*
|
||||
X73204966Y-91899809D01*
|
||||
X73109728Y-91937904D01*
|
||||
X72824014Y-91937904D01*
|
||||
X72728776Y-91899809D01*
|
||||
X72681157Y-91861714D01*
|
||||
X73585919Y-91137904D02*
|
||||
X73919252Y-91937904D01*
|
||||
X74252585Y-91137904D01*
|
||||
X74490680Y-91137904D02*
|
||||
X75109728Y-91137904D01*
|
||||
X74776395Y-91442666D01*
|
||||
X74919252Y-91442666D01*
|
||||
X75014490Y-91480761D01*
|
||||
X75062109Y-91518857D01*
|
||||
X75109728Y-91595047D01*
|
||||
X75109728Y-91785523D01*
|
||||
X75062109Y-91861714D01*
|
||||
X75014490Y-91899809D01*
|
||||
X74919252Y-91937904D01*
|
||||
X74633538Y-91937904D01*
|
||||
X74538300Y-91899809D01*
|
||||
X74490680Y-91861714D01*
|
||||
X73109728Y-92806857D02*
|
||||
X73252585Y-92844952D01*
|
||||
X73300204Y-92883047D01*
|
||||
X73347823Y-92959238D01*
|
||||
X73347823Y-93073523D01*
|
||||
X73300204Y-93149714D01*
|
||||
X73252585Y-93187809D01*
|
||||
X73157347Y-93225904D01*
|
||||
X72776395Y-93225904D01*
|
||||
X72776395Y-92425904D01*
|
||||
X73109728Y-92425904D01*
|
||||
X73204966Y-92464000D01*
|
||||
X73252585Y-92502095D01*
|
||||
X73300204Y-92578285D01*
|
||||
X73300204Y-92654476D01*
|
||||
X73252585Y-92730666D01*
|
||||
X73204966Y-92768761D01*
|
||||
X73109728Y-92806857D01*
|
||||
X72776395Y-92806857D01*
|
||||
X73966871Y-92425904D02*
|
||||
X74157347Y-92425904D01*
|
||||
X74252585Y-92464000D01*
|
||||
X74347823Y-92540190D01*
|
||||
X74395442Y-92692571D01*
|
||||
X74395442Y-92959238D01*
|
||||
X74347823Y-93111619D01*
|
||||
X74252585Y-93187809D01*
|
||||
X74157347Y-93225904D01*
|
||||
X73966871Y-93225904D01*
|
||||
X73871633Y-93187809D01*
|
||||
X73776395Y-93111619D01*
|
||||
X73728776Y-92959238D01*
|
||||
X73728776Y-92692571D01*
|
||||
X73776395Y-92540190D01*
|
||||
X73871633Y-92464000D01*
|
||||
X73966871Y-92425904D01*
|
||||
X75014490Y-92425904D02*
|
||||
X75204966Y-92425904D01*
|
||||
X75300204Y-92464000D01*
|
||||
X75395442Y-92540190D01*
|
||||
X75443061Y-92692571D01*
|
||||
X75443061Y-92959238D01*
|
||||
X75395442Y-93111619D01*
|
||||
X75300204Y-93187809D01*
|
||||
X75204966Y-93225904D01*
|
||||
X75014490Y-93225904D01*
|
||||
X74919252Y-93187809D01*
|
||||
X74824014Y-93111619D01*
|
||||
X74776395Y-92959238D01*
|
||||
X74776395Y-92692571D01*
|
||||
X74824014Y-92540190D01*
|
||||
X74919252Y-92464000D01*
|
||||
X75014490Y-92425904D01*
|
||||
X75728776Y-92425904D02*
|
||||
X76300204Y-92425904D01*
|
||||
X76014490Y-93225904D02*
|
||||
X76014490Y-92425904D01*
|
||||
X76824014Y-92425904D02*
|
||||
X76919252Y-92425904D01*
|
||||
X77014490Y-92464000D01*
|
||||
X77062109Y-92502095D01*
|
||||
X77109728Y-92578285D01*
|
||||
X77157347Y-92730666D01*
|
||||
X77157347Y-92921142D01*
|
||||
X77109728Y-93073523D01*
|
||||
X77062109Y-93149714D01*
|
||||
X77014490Y-93187809D01*
|
||||
X76919252Y-93225904D01*
|
||||
X76824014Y-93225904D01*
|
||||
X76728776Y-93187809D01*
|
||||
X76681157Y-93149714D01*
|
||||
X76633538Y-93073523D01*
|
||||
X76585919Y-92921142D01*
|
||||
X76585919Y-92730666D01*
|
||||
X76633538Y-92578285D01*
|
||||
X76681157Y-92502095D01*
|
||||
X76728776Y-92464000D01*
|
||||
X76824014Y-92425904D01*
|
||||
X72776395Y-94513904D02*
|
||||
X72776395Y-93713904D01*
|
||||
X73347823Y-94513904D01*
|
||||
X73347823Y-93713904D01*
|
||||
X74395442Y-94513904D02*
|
||||
X74062109Y-94132952D01*
|
||||
X73824014Y-94513904D02*
|
||||
X73824014Y-93713904D01*
|
||||
X74204966Y-93713904D01*
|
||||
X74300204Y-93752000D01*
|
||||
X74347823Y-93790095D01*
|
||||
X74395442Y-93866285D01*
|
||||
X74395442Y-93980571D01*
|
||||
X74347823Y-94056761D01*
|
||||
X74300204Y-94094857D01*
|
||||
X74204966Y-94132952D01*
|
||||
X73824014Y-94132952D01*
|
||||
X74776395Y-94475809D02*
|
||||
X74919252Y-94513904D01*
|
||||
X75157347Y-94513904D01*
|
||||
X75252585Y-94475809D01*
|
||||
X75300204Y-94437714D01*
|
||||
X75347823Y-94361523D01*
|
||||
X75347823Y-94285333D01*
|
||||
X75300204Y-94209142D01*
|
||||
X75252585Y-94171047D01*
|
||||
X75157347Y-94132952D01*
|
||||
X74966871Y-94094857D01*
|
||||
X74871633Y-94056761D01*
|
||||
X74824014Y-94018666D01*
|
||||
X74776395Y-93942476D01*
|
||||
X74776395Y-93866285D01*
|
||||
X74824014Y-93790095D01*
|
||||
X74871633Y-93752000D01*
|
||||
X74966871Y-93713904D01*
|
||||
X75204966Y-93713904D01*
|
||||
X75347823Y-93752000D01*
|
||||
X75633538Y-93713904D02*
|
||||
X76204966Y-93713904D01*
|
||||
X75919252Y-94513904D02*
|
||||
X75919252Y-93713904D01*
|
||||
D11*
|
||||
X127959219Y-92224361D02*
|
||||
X129197314Y-92224361D01*
|
||||
X128530647Y-92986266D01*
|
||||
X128816361Y-92986266D01*
|
||||
X129006838Y-93081504D01*
|
||||
X129102076Y-93176742D01*
|
||||
X129197314Y-93367219D01*
|
||||
X129197314Y-93843409D01*
|
||||
X129102076Y-94033885D01*
|
||||
X129006838Y-94129123D01*
|
||||
X128816361Y-94224361D01*
|
||||
X128244933Y-94224361D01*
|
||||
X128054457Y-94129123D01*
|
||||
X127959219Y-94033885D01*
|
||||
X130054457Y-94033885D02*
|
||||
X130149695Y-94129123D01*
|
||||
X130054457Y-94224361D01*
|
||||
X129959219Y-94129123D01*
|
||||
X130054457Y-94033885D01*
|
||||
X130054457Y-94224361D01*
|
||||
X130816361Y-92224361D02*
|
||||
X132054457Y-92224361D01*
|
||||
X131387790Y-92986266D01*
|
||||
X131673504Y-92986266D01*
|
||||
X131863980Y-93081504D01*
|
||||
X131959219Y-93176742D01*
|
||||
X132054457Y-93367219D01*
|
||||
X132054457Y-93843409D01*
|
||||
X131959219Y-94033885D01*
|
||||
X131863980Y-94129123D01*
|
||||
X131673504Y-94224361D01*
|
||||
X131102076Y-94224361D01*
|
||||
X130911600Y-94129123D01*
|
||||
X130816361Y-94033885D01*
|
||||
X132625885Y-92224361D02*
|
||||
X133292552Y-94224361D01*
|
||||
X133959219Y-92224361D01*
|
||||
X128073209Y-74576952D02*
|
||||
X126882733Y-74576952D01*
|
||||
X126763685Y-75767428D01*
|
||||
X126882733Y-75648380D01*
|
||||
X127120828Y-75529333D01*
|
||||
X127716066Y-75529333D01*
|
||||
X127954161Y-75648380D01*
|
||||
X128073209Y-75767428D01*
|
||||
X128192257Y-76005523D01*
|
||||
X128192257Y-76600761D01*
|
||||
X128073209Y-76838857D01*
|
||||
X127954161Y-76957904D01*
|
||||
X127716066Y-77076952D01*
|
||||
X127120828Y-77076952D01*
|
||||
X126882733Y-76957904D01*
|
||||
X126763685Y-76838857D01*
|
||||
X128906542Y-74576952D02*
|
||||
X129739876Y-77076952D01*
|
||||
X130573209Y-74576952D01*
|
||||
X137347485Y-92116400D02*
|
||||
X137157009Y-92021161D01*
|
||||
X136871295Y-92021161D01*
|
||||
X136585580Y-92116400D01*
|
||||
X136395104Y-92306876D01*
|
||||
X136299866Y-92497352D01*
|
||||
X136204628Y-92878304D01*
|
||||
X136204628Y-93164019D01*
|
||||
X136299866Y-93544971D01*
|
||||
X136395104Y-93735447D01*
|
||||
X136585580Y-93925923D01*
|
||||
X136871295Y-94021161D01*
|
||||
X137061771Y-94021161D01*
|
||||
X137347485Y-93925923D01*
|
||||
X137442723Y-93830685D01*
|
||||
X137442723Y-93164019D01*
|
||||
X137061771Y-93164019D01*
|
||||
X138299866Y-92687828D02*
|
||||
X138299866Y-94021161D01*
|
||||
X138299866Y-92878304D02*
|
||||
X138395104Y-92783066D01*
|
||||
X138585580Y-92687828D01*
|
||||
X138871295Y-92687828D01*
|
||||
X139061771Y-92783066D01*
|
||||
X139157009Y-92973542D01*
|
||||
X139157009Y-94021161D01*
|
||||
X140966533Y-94021161D02*
|
||||
X140966533Y-92021161D01*
|
||||
X140966533Y-93925923D02*
|
||||
X140776057Y-94021161D01*
|
||||
X140395104Y-94021161D01*
|
||||
X140204628Y-93925923D01*
|
||||
X140109390Y-93830685D01*
|
||||
X140014152Y-93640209D01*
|
||||
X140014152Y-93068780D01*
|
||||
X140109390Y-92878304D01*
|
||||
X140204628Y-92783066D01*
|
||||
X140395104Y-92687828D01*
|
||||
X140776057Y-92687828D01*
|
||||
X140966533Y-92783066D01*
|
||||
X97873561Y-109820352D02*
|
||||
X97873561Y-111844161D01*
|
||||
X97992609Y-112082257D01*
|
||||
@ -334,423 +722,39 @@ X116980704Y-120013209D01*
|
||||
X117099752Y-120251304D01*
|
||||
X117337847Y-120370352D01*
|
||||
X117575942Y-120370352D01*
|
||||
D11*
|
||||
X72728776Y-88035809D02*
|
||||
X72871633Y-88073904D01*
|
||||
X73109728Y-88073904D01*
|
||||
X73204966Y-88035809D01*
|
||||
X73252585Y-87997714D01*
|
||||
X73300204Y-87921523D01*
|
||||
X73300204Y-87845333D01*
|
||||
X73252585Y-87769142D01*
|
||||
X73204966Y-87731047D01*
|
||||
X73109728Y-87692952D01*
|
||||
X72919252Y-87654857D01*
|
||||
X72824014Y-87616761D01*
|
||||
X72776395Y-87578666D01*
|
||||
X72728776Y-87502476D01*
|
||||
X72728776Y-87426285D01*
|
||||
X72776395Y-87350095D01*
|
||||
X72824014Y-87312000D01*
|
||||
X72919252Y-87273904D01*
|
||||
X73157347Y-87273904D01*
|
||||
X73300204Y-87312000D01*
|
||||
X73633538Y-87273904D02*
|
||||
X73871633Y-88073904D01*
|
||||
X74062109Y-87502476D01*
|
||||
X74252585Y-88073904D01*
|
||||
X74490680Y-87273904D01*
|
||||
X75443061Y-87997714D02*
|
||||
X75395442Y-88035809D01*
|
||||
X75252585Y-88073904D01*
|
||||
X75157347Y-88073904D01*
|
||||
X75014490Y-88035809D01*
|
||||
X74919252Y-87959619D01*
|
||||
X74871633Y-87883428D01*
|
||||
X74824014Y-87731047D01*
|
||||
X74824014Y-87616761D01*
|
||||
X74871633Y-87464380D01*
|
||||
X74919252Y-87388190D01*
|
||||
X75014490Y-87312000D01*
|
||||
X75157347Y-87273904D01*
|
||||
X75252585Y-87273904D01*
|
||||
X75395442Y-87312000D01*
|
||||
X75443061Y-87350095D01*
|
||||
X76347823Y-88073904D02*
|
||||
X75871633Y-88073904D01*
|
||||
X75871633Y-87273904D01*
|
||||
X76681157Y-88073904D02*
|
||||
X76681157Y-87273904D01*
|
||||
X77252585Y-88073904D02*
|
||||
X76824014Y-87616761D01*
|
||||
X77252585Y-87273904D02*
|
||||
X76681157Y-87731047D01*
|
||||
X72728776Y-89323809D02*
|
||||
X72871633Y-89361904D01*
|
||||
X73109728Y-89361904D01*
|
||||
X73204966Y-89323809D01*
|
||||
X73252585Y-89285714D01*
|
||||
X73300204Y-89209523D01*
|
||||
X73300204Y-89133333D01*
|
||||
X73252585Y-89057142D01*
|
||||
X73204966Y-89019047D01*
|
||||
X73109728Y-88980952D01*
|
||||
X72919252Y-88942857D01*
|
||||
X72824014Y-88904761D01*
|
||||
X72776395Y-88866666D01*
|
||||
X72728776Y-88790476D01*
|
||||
X72728776Y-88714285D01*
|
||||
X72776395Y-88638095D01*
|
||||
X72824014Y-88600000D01*
|
||||
X72919252Y-88561904D01*
|
||||
X73157347Y-88561904D01*
|
||||
X73300204Y-88600000D01*
|
||||
X73633538Y-88561904D02*
|
||||
X73871633Y-89361904D01*
|
||||
X74062109Y-88790476D01*
|
||||
X74252585Y-89361904D01*
|
||||
X74490680Y-88561904D01*
|
||||
X74871633Y-89361904D02*
|
||||
X74871633Y-88561904D01*
|
||||
X75109728Y-88561904D01*
|
||||
X75252585Y-88600000D01*
|
||||
X75347823Y-88676190D01*
|
||||
X75395442Y-88752380D01*
|
||||
X75443061Y-88904761D01*
|
||||
X75443061Y-89019047D01*
|
||||
X75395442Y-89171428D01*
|
||||
X75347823Y-89247619D01*
|
||||
X75252585Y-89323809D01*
|
||||
X75109728Y-89361904D01*
|
||||
X74871633Y-89361904D01*
|
||||
X75871633Y-89361904D02*
|
||||
X75871633Y-88561904D01*
|
||||
X76538300Y-88561904D02*
|
||||
X76728776Y-88561904D01*
|
||||
X76824014Y-88600000D01*
|
||||
X76919252Y-88676190D01*
|
||||
X76966871Y-88828571D01*
|
||||
X76966871Y-89095238D01*
|
||||
X76919252Y-89247619D01*
|
||||
X76824014Y-89323809D01*
|
||||
X76728776Y-89361904D01*
|
||||
X76538300Y-89361904D01*
|
||||
X76443061Y-89323809D01*
|
||||
X76347823Y-89247619D01*
|
||||
X76300204Y-89095238D01*
|
||||
X76300204Y-88828571D01*
|
||||
X76347823Y-88676190D01*
|
||||
X76443061Y-88600000D01*
|
||||
X76538300Y-88561904D01*
|
||||
X73300204Y-89888000D02*
|
||||
X73204966Y-89849904D01*
|
||||
X73062109Y-89849904D01*
|
||||
X72919252Y-89888000D01*
|
||||
X72824014Y-89964190D01*
|
||||
X72776395Y-90040380D01*
|
||||
X72728776Y-90192761D01*
|
||||
X72728776Y-90307047D01*
|
||||
X72776395Y-90459428D01*
|
||||
X72824014Y-90535619D01*
|
||||
X72919252Y-90611809D01*
|
||||
X73062109Y-90649904D01*
|
||||
X73157347Y-90649904D01*
|
||||
X73300204Y-90611809D01*
|
||||
X73347823Y-90573714D01*
|
||||
X73347823Y-90307047D01*
|
||||
X73157347Y-90307047D01*
|
||||
X73776395Y-90649904D02*
|
||||
X73776395Y-89849904D01*
|
||||
X74347823Y-90649904D01*
|
||||
X74347823Y-89849904D01*
|
||||
X74824014Y-90649904D02*
|
||||
X74824014Y-89849904D01*
|
||||
X75062109Y-89849904D01*
|
||||
X75204966Y-89888000D01*
|
||||
X75300204Y-89964190D01*
|
||||
X75347823Y-90040380D01*
|
||||
X75395442Y-90192761D01*
|
||||
X75395442Y-90307047D01*
|
||||
X75347823Y-90459428D01*
|
||||
X75300204Y-90535619D01*
|
||||
X75204966Y-90611809D01*
|
||||
X75062109Y-90649904D01*
|
||||
X74824014Y-90649904D01*
|
||||
X72681157Y-91137904D02*
|
||||
X73300204Y-91137904D01*
|
||||
X72966871Y-91442666D01*
|
||||
X73109728Y-91442666D01*
|
||||
X73204966Y-91480761D01*
|
||||
X73252585Y-91518857D01*
|
||||
X73300204Y-91595047D01*
|
||||
X73300204Y-91785523D01*
|
||||
X73252585Y-91861714D01*
|
||||
X73204966Y-91899809D01*
|
||||
X73109728Y-91937904D01*
|
||||
X72824014Y-91937904D01*
|
||||
X72728776Y-91899809D01*
|
||||
X72681157Y-91861714D01*
|
||||
X73585919Y-91137904D02*
|
||||
X73919252Y-91937904D01*
|
||||
X74252585Y-91137904D01*
|
||||
X74490680Y-91137904D02*
|
||||
X75109728Y-91137904D01*
|
||||
X74776395Y-91442666D01*
|
||||
X74919252Y-91442666D01*
|
||||
X75014490Y-91480761D01*
|
||||
X75062109Y-91518857D01*
|
||||
X75109728Y-91595047D01*
|
||||
X75109728Y-91785523D01*
|
||||
X75062109Y-91861714D01*
|
||||
X75014490Y-91899809D01*
|
||||
X74919252Y-91937904D01*
|
||||
X74633538Y-91937904D01*
|
||||
X74538300Y-91899809D01*
|
||||
X74490680Y-91861714D01*
|
||||
X73109728Y-92806857D02*
|
||||
X73252585Y-92844952D01*
|
||||
X73300204Y-92883047D01*
|
||||
X73347823Y-92959238D01*
|
||||
X73347823Y-93073523D01*
|
||||
X73300204Y-93149714D01*
|
||||
X73252585Y-93187809D01*
|
||||
X73157347Y-93225904D01*
|
||||
X72776395Y-93225904D01*
|
||||
X72776395Y-92425904D01*
|
||||
X73109728Y-92425904D01*
|
||||
X73204966Y-92464000D01*
|
||||
X73252585Y-92502095D01*
|
||||
X73300204Y-92578285D01*
|
||||
X73300204Y-92654476D01*
|
||||
X73252585Y-92730666D01*
|
||||
X73204966Y-92768761D01*
|
||||
X73109728Y-92806857D01*
|
||||
X72776395Y-92806857D01*
|
||||
X73966871Y-92425904D02*
|
||||
X74157347Y-92425904D01*
|
||||
X74252585Y-92464000D01*
|
||||
X74347823Y-92540190D01*
|
||||
X74395442Y-92692571D01*
|
||||
X74395442Y-92959238D01*
|
||||
X74347823Y-93111619D01*
|
||||
X74252585Y-93187809D01*
|
||||
X74157347Y-93225904D01*
|
||||
X73966871Y-93225904D01*
|
||||
X73871633Y-93187809D01*
|
||||
X73776395Y-93111619D01*
|
||||
X73728776Y-92959238D01*
|
||||
X73728776Y-92692571D01*
|
||||
X73776395Y-92540190D01*
|
||||
X73871633Y-92464000D01*
|
||||
X73966871Y-92425904D01*
|
||||
X75014490Y-92425904D02*
|
||||
X75204966Y-92425904D01*
|
||||
X75300204Y-92464000D01*
|
||||
X75395442Y-92540190D01*
|
||||
X75443061Y-92692571D01*
|
||||
X75443061Y-92959238D01*
|
||||
X75395442Y-93111619D01*
|
||||
X75300204Y-93187809D01*
|
||||
X75204966Y-93225904D01*
|
||||
X75014490Y-93225904D01*
|
||||
X74919252Y-93187809D01*
|
||||
X74824014Y-93111619D01*
|
||||
X74776395Y-92959238D01*
|
||||
X74776395Y-92692571D01*
|
||||
X74824014Y-92540190D01*
|
||||
X74919252Y-92464000D01*
|
||||
X75014490Y-92425904D01*
|
||||
X75728776Y-92425904D02*
|
||||
X76300204Y-92425904D01*
|
||||
X76014490Y-93225904D02*
|
||||
X76014490Y-92425904D01*
|
||||
X76824014Y-92425904D02*
|
||||
X76919252Y-92425904D01*
|
||||
X77014490Y-92464000D01*
|
||||
X77062109Y-92502095D01*
|
||||
X77109728Y-92578285D01*
|
||||
X77157347Y-92730666D01*
|
||||
X77157347Y-92921142D01*
|
||||
X77109728Y-93073523D01*
|
||||
X77062109Y-93149714D01*
|
||||
X77014490Y-93187809D01*
|
||||
X76919252Y-93225904D01*
|
||||
X76824014Y-93225904D01*
|
||||
X76728776Y-93187809D01*
|
||||
X76681157Y-93149714D01*
|
||||
X76633538Y-93073523D01*
|
||||
X76585919Y-92921142D01*
|
||||
X76585919Y-92730666D01*
|
||||
X76633538Y-92578285D01*
|
||||
X76681157Y-92502095D01*
|
||||
X76728776Y-92464000D01*
|
||||
X76824014Y-92425904D01*
|
||||
X72776395Y-94513904D02*
|
||||
X72776395Y-93713904D01*
|
||||
X73347823Y-94513904D01*
|
||||
X73347823Y-93713904D01*
|
||||
X74395442Y-94513904D02*
|
||||
X74062109Y-94132952D01*
|
||||
X73824014Y-94513904D02*
|
||||
X73824014Y-93713904D01*
|
||||
X74204966Y-93713904D01*
|
||||
X74300204Y-93752000D01*
|
||||
X74347823Y-93790095D01*
|
||||
X74395442Y-93866285D01*
|
||||
X74395442Y-93980571D01*
|
||||
X74347823Y-94056761D01*
|
||||
X74300204Y-94094857D01*
|
||||
X74204966Y-94132952D01*
|
||||
X73824014Y-94132952D01*
|
||||
X74776395Y-94475809D02*
|
||||
X74919252Y-94513904D01*
|
||||
X75157347Y-94513904D01*
|
||||
X75252585Y-94475809D01*
|
||||
X75300204Y-94437714D01*
|
||||
X75347823Y-94361523D01*
|
||||
X75347823Y-94285333D01*
|
||||
X75300204Y-94209142D01*
|
||||
X75252585Y-94171047D01*
|
||||
X75157347Y-94132952D01*
|
||||
X74966871Y-94094857D01*
|
||||
X74871633Y-94056761D01*
|
||||
X74824014Y-94018666D01*
|
||||
X74776395Y-93942476D01*
|
||||
X74776395Y-93866285D01*
|
||||
X74824014Y-93790095D01*
|
||||
X74871633Y-93752000D01*
|
||||
X74966871Y-93713904D01*
|
||||
X75204966Y-93713904D01*
|
||||
X75347823Y-93752000D01*
|
||||
X75633538Y-93713904D02*
|
||||
X76204966Y-93713904D01*
|
||||
X75919252Y-94513904D02*
|
||||
X75919252Y-93713904D01*
|
||||
D10*
|
||||
X127959219Y-92224361D02*
|
||||
X129197314Y-92224361D01*
|
||||
X128530647Y-92986266D01*
|
||||
X128816361Y-92986266D01*
|
||||
X129006838Y-93081504D01*
|
||||
X129102076Y-93176742D01*
|
||||
X129197314Y-93367219D01*
|
||||
X129197314Y-93843409D01*
|
||||
X129102076Y-94033885D01*
|
||||
X129006838Y-94129123D01*
|
||||
X128816361Y-94224361D01*
|
||||
X128244933Y-94224361D01*
|
||||
X128054457Y-94129123D01*
|
||||
X127959219Y-94033885D01*
|
||||
X130054457Y-94033885D02*
|
||||
X130149695Y-94129123D01*
|
||||
X130054457Y-94224361D01*
|
||||
X129959219Y-94129123D01*
|
||||
X130054457Y-94033885D01*
|
||||
X130054457Y-94224361D01*
|
||||
X130816361Y-92224361D02*
|
||||
X132054457Y-92224361D01*
|
||||
X131387790Y-92986266D01*
|
||||
X131673504Y-92986266D01*
|
||||
X131863980Y-93081504D01*
|
||||
X131959219Y-93176742D01*
|
||||
X132054457Y-93367219D01*
|
||||
X132054457Y-93843409D01*
|
||||
X131959219Y-94033885D01*
|
||||
X131863980Y-94129123D01*
|
||||
X131673504Y-94224361D01*
|
||||
X131102076Y-94224361D01*
|
||||
X130911600Y-94129123D01*
|
||||
X130816361Y-94033885D01*
|
||||
X132625885Y-92224361D02*
|
||||
X133292552Y-94224361D01*
|
||||
X133959219Y-92224361D01*
|
||||
X128073209Y-74576952D02*
|
||||
X126882733Y-74576952D01*
|
||||
X126763685Y-75767428D01*
|
||||
X126882733Y-75648380D01*
|
||||
X127120828Y-75529333D01*
|
||||
X127716066Y-75529333D01*
|
||||
X127954161Y-75648380D01*
|
||||
X128073209Y-75767428D01*
|
||||
X128192257Y-76005523D01*
|
||||
X128192257Y-76600761D01*
|
||||
X128073209Y-76838857D01*
|
||||
X127954161Y-76957904D01*
|
||||
X127716066Y-77076952D01*
|
||||
X127120828Y-77076952D01*
|
||||
X126882733Y-76957904D01*
|
||||
X126763685Y-76838857D01*
|
||||
X128906542Y-74576952D02*
|
||||
X129739876Y-77076952D01*
|
||||
X130573209Y-74576952D01*
|
||||
X137347485Y-92116400D02*
|
||||
X137157009Y-92021161D01*
|
||||
X136871295Y-92021161D01*
|
||||
X136585580Y-92116400D01*
|
||||
X136395104Y-92306876D01*
|
||||
X136299866Y-92497352D01*
|
||||
X136204628Y-92878304D01*
|
||||
X136204628Y-93164019D01*
|
||||
X136299866Y-93544971D01*
|
||||
X136395104Y-93735447D01*
|
||||
X136585580Y-93925923D01*
|
||||
X136871295Y-94021161D01*
|
||||
X137061771Y-94021161D01*
|
||||
X137347485Y-93925923D01*
|
||||
X137442723Y-93830685D01*
|
||||
X137442723Y-93164019D01*
|
||||
X137061771Y-93164019D01*
|
||||
X138299866Y-92687828D02*
|
||||
X138299866Y-94021161D01*
|
||||
X138299866Y-92878304D02*
|
||||
X138395104Y-92783066D01*
|
||||
X138585580Y-92687828D01*
|
||||
X138871295Y-92687828D01*
|
||||
X139061771Y-92783066D01*
|
||||
X139157009Y-92973542D01*
|
||||
X139157009Y-94021161D01*
|
||||
X140966533Y-94021161D02*
|
||||
X140966533Y-92021161D01*
|
||||
X140966533Y-93925923D02*
|
||||
X140776057Y-94021161D01*
|
||||
X140395104Y-94021161D01*
|
||||
X140204628Y-93925923D01*
|
||||
X140109390Y-93830685D01*
|
||||
X140014152Y-93640209D01*
|
||||
X140014152Y-93068780D01*
|
||||
X140109390Y-92878304D01*
|
||||
X140204628Y-92783066D01*
|
||||
X140395104Y-92687828D01*
|
||||
X140776057Y-92687828D01*
|
||||
X140966533Y-92783066D01*
|
||||
D11*
|
||||
%TO.C,U5*%
|
||||
X113508895Y-59451580D02*
|
||||
X113508895Y-60261104D01*
|
||||
X113556514Y-60356342D01*
|
||||
X113604133Y-60403961D01*
|
||||
X113699371Y-60451580D01*
|
||||
X113889847Y-60451580D01*
|
||||
X113985085Y-60403961D01*
|
||||
X114032704Y-60356342D01*
|
||||
X114080323Y-60261104D01*
|
||||
X114080323Y-59451580D01*
|
||||
X115032704Y-59451580D02*
|
||||
X114556514Y-59451580D01*
|
||||
X114508895Y-59927771D01*
|
||||
X114556514Y-59880152D01*
|
||||
X114651752Y-59832533D01*
|
||||
X114889847Y-59832533D01*
|
||||
X114985085Y-59880152D01*
|
||||
X115032704Y-59927771D01*
|
||||
X115080323Y-60023009D01*
|
||||
X115080323Y-60261104D01*
|
||||
X115032704Y-60356342D01*
|
||||
X114985085Y-60403961D01*
|
||||
X114889847Y-60451580D01*
|
||||
X114651752Y-60451580D01*
|
||||
X114556514Y-60403961D01*
|
||||
X114508895Y-60356342D01*
|
||||
%TO.C,R12*%
|
||||
X80048380Y-82327357D02*
|
||||
X79572190Y-82660690D01*
|
||||
X80048380Y-82898785D02*
|
||||
X79048380Y-82898785D01*
|
||||
X79048380Y-82517833D01*
|
||||
X79096000Y-82422595D01*
|
||||
X79143619Y-82374976D01*
|
||||
X79238857Y-82327357D01*
|
||||
X79381714Y-82327357D01*
|
||||
X79476952Y-82374976D01*
|
||||
X79524571Y-82422595D01*
|
||||
X79572190Y-82517833D01*
|
||||
X79572190Y-82898785D01*
|
||||
X80048380Y-81374976D02*
|
||||
X80048380Y-81946404D01*
|
||||
X80048380Y-81660690D02*
|
||||
X79048380Y-81660690D01*
|
||||
X79191238Y-81755928D01*
|
||||
X79286476Y-81851166D01*
|
||||
X79334095Y-81946404D01*
|
||||
X79143619Y-80994023D02*
|
||||
X79096000Y-80946404D01*
|
||||
X79048380Y-80851166D01*
|
||||
X79048380Y-80613071D01*
|
||||
X79096000Y-80517833D01*
|
||||
X79143619Y-80470214D01*
|
||||
X79238857Y-80422595D01*
|
||||
X79334095Y-80422595D01*
|
||||
X79476952Y-80470214D01*
|
||||
X80048380Y-81041642D01*
|
||||
X80048380Y-80422595D01*
|
||||
%TO.C,J6*%
|
||||
X104389180Y-63090228D02*
|
||||
X103389180Y-63090228D01*
|
||||
@ -796,6 +800,33 @@ X103389180Y-60518800D01*
|
||||
X103436800Y-60375942D01*
|
||||
X104389180Y-59947371D02*
|
||||
X103389180Y-59947371D01*
|
||||
%TO.C,U5*%
|
||||
X113508895Y-59451580D02*
|
||||
X113508895Y-60261104D01*
|
||||
X113556514Y-60356342D01*
|
||||
X113604133Y-60403961D01*
|
||||
X113699371Y-60451580D01*
|
||||
X113889847Y-60451580D01*
|
||||
X113985085Y-60403961D01*
|
||||
X114032704Y-60356342D01*
|
||||
X114080323Y-60261104D01*
|
||||
X114080323Y-59451580D01*
|
||||
X115032704Y-59451580D02*
|
||||
X114556514Y-59451580D01*
|
||||
X114508895Y-59927771D01*
|
||||
X114556514Y-59880152D01*
|
||||
X114651752Y-59832533D01*
|
||||
X114889847Y-59832533D01*
|
||||
X114985085Y-59880152D01*
|
||||
X115032704Y-59927771D01*
|
||||
X115080323Y-60023009D01*
|
||||
X115080323Y-60261104D01*
|
||||
X115032704Y-60356342D01*
|
||||
X114985085Y-60403961D01*
|
||||
X114889847Y-60451580D01*
|
||||
X114651752Y-60451580D01*
|
||||
X114556514Y-60403961D01*
|
||||
X114508895Y-60356342D01*
|
||||
%TO.C,J3*%
|
||||
X112466380Y-63442742D02*
|
||||
X112466380Y-63918933D01*
|
||||
@ -1267,11 +1298,16 @@ X79879461Y-91931838D01*
|
||||
X79784223Y-92027076D01*
|
||||
X79688985Y-92074695D01*
|
||||
D12*
|
||||
%TO.C,R12*%
|
||||
X80503500Y-81939224D02*
|
||||
X80503500Y-81429776D01*
|
||||
X81548500Y-81939224D02*
|
||||
X81548500Y-81429776D01*
|
||||
%TO.C,U5*%
|
||||
X113370800Y-58709200D02*
|
||||
X115820800Y-58709200D01*
|
||||
X115170800Y-55489200D02*
|
||||
X113370800Y-55489200D01*
|
||||
X113370800Y-58709200D02*
|
||||
X115820800Y-58709200D01*
|
||||
%TO.C,D1*%
|
||||
X78283200Y-84906700D02*
|
||||
X78283200Y-85706700D01*
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
Drill report for Canon_manage.kicad_pcb
|
||||
Created on Вт 14 мар 2023 09:48:43
|
||||
Created on Вт 14 мар 2023 16:41:33
|
||||
|
||||
Copper Layer Stackup:
|
||||
=============================================================
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.10*%
|
||||
%TF.CreationDate,2023-03-14T09:48:38+03:00*%
|
||||
%TF.CreationDate,2023-03-14T16:41:31+03:00*%
|
||||
%TF.ProjectId,Canon_manage,43616e6f-6e5f-46d6-916e-6167652e6b69,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Drillmap*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX45Y45*%
|
||||
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 09:48:38*
|
||||
G04 Created by KiCad (PCBNEW 6.0.10) date 2023-03-14 16:41:31*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
"Application": "Pcbnew",
|
||||
"Version": "6.0.10"
|
||||
},
|
||||
"CreationDate": "2023-03-14T09:48:46+03:00"
|
||||
"CreationDate": "2023-03-14T16:41:35+03:00"
|
||||
},
|
||||
"GeneralSpecs": {
|
||||
"ProjectId": {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
M48
|
||||
; DRILL file {KiCad 6.0.10} date Вт 14 мар 2023 09:48:43
|
||||
; DRILL file {KiCad 6.0.10} date Вт 14 мар 2023 16:41:34
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2023-03-14T09:48:43+03:00
|
||||
; #@! TF.CreationDate,2023-03-14T16:41:34+03:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,6.0.10
|
||||
; #@! TF.FileFunction,MixedPlating,1,2
|
||||
FMAT,2
|
||||
|
||||
@ -16,7 +16,9 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "can.h"
|
||||
#include "canon.h"
|
||||
#include "flash.h"
|
||||
#include "hardware.h"
|
||||
#include "proto.h"
|
||||
#include "spi.h"
|
||||
@ -54,24 +56,22 @@ int main(void){
|
||||
sysreset();
|
||||
StartHSE();
|
||||
SysTick_Config(72000);
|
||||
flashstorage_init();
|
||||
hw_setup();
|
||||
USB_setup();
|
||||
if(ISUSB()) USB_setup();
|
||||
else CAN_setup(the_conf.canspeed, the_conf.canID);
|
||||
spi_setup();
|
||||
canon_init();
|
||||
|
||||
uint32_t ctr = Tms, SPIctr = Tms;
|
||||
uint32_t SPIctr = Tms;
|
||||
while(1){
|
||||
if(Tms - ctr > 499){
|
||||
ctr = Tms;
|
||||
LED_blink(LED0);
|
||||
}
|
||||
IWDG->KR = IWDG_REFRESH;
|
||||
char *txt = NULL;
|
||||
usb_proc();
|
||||
if((txt = get_USB())){
|
||||
const char *ans = parse_cmd(txt);
|
||||
if(ans) USB_send(ans);
|
||||
}
|
||||
if(Tms != SPIctr){ // not more than once per 1ms
|
||||
if(Tms - SPIctr > 10){ // not more than once per 10ms
|
||||
SPIctr = Tms;
|
||||
canon_proc();
|
||||
}
|
||||
|
||||
6
F1:F103/Canon_managing_device/openocd.cfg
Normal file
6
F1:F103/Canon_managing_device/openocd.cfg
Normal file
@ -0,0 +1,6 @@
|
||||
# STM32F103C8 "Blue Pill"
|
||||
|
||||
set FLASH_SIZE 0x20000
|
||||
|
||||
source [find interface/stlink-v2-1.cfg]
|
||||
source [find target/stm32f1x.cfg]
|
||||
@ -17,12 +17,15 @@
|
||||
*/
|
||||
|
||||
#include "canon.h"
|
||||
#include "flash.h"
|
||||
#include "hardware.h"
|
||||
#include "proto.h"
|
||||
#include "spi.h"
|
||||
#include "usb.h"
|
||||
#include "version.inc"
|
||||
|
||||
static const char *OK = "OK", *FAIL = "FAIL";
|
||||
|
||||
char *omit_spaces(const char *buf){
|
||||
while(*buf){
|
||||
if(*buf > ' ') break;
|
||||
@ -154,22 +157,29 @@ char *getnum(const char *txt, uint32_t *N){
|
||||
}
|
||||
|
||||
const char* helpmsg =
|
||||
"https://github.com/eddyem/stm32samples/tree/master/F1-nolib/USB_Canon_management build#" BUILD_NUMBER " @ " BUILD_DATE "\n"
|
||||
"https://github.com/eddyem/stm32samples/tree/master/F1-nolib/Canon_managing_device build#" BUILD_NUMBER " @ " BUILD_DATE "\n"
|
||||
"0 - move to smallest foc value (e.g. 2.5m)\n"
|
||||
"1 - move to largest foc value (e.g. infinity)\n"
|
||||
"a - set (!0) or reset (0) autoinit\n"
|
||||
"d - open/close diaphragm by 1 step (+/-), open/close fully (o/c) (no way to know it current status)\n"
|
||||
"f - get focus state or move it to given relative position\n"
|
||||
"f - move focus to given ABSOLUTE position or get current value (without number)\n"
|
||||
"h - turn on hand focus management\n"
|
||||
"i - get lens information\n"
|
||||
"l - get lens model\n"
|
||||
"r - get regulators' state\n"
|
||||
"\t\tdebugging commands:\n"
|
||||
"\t\tdebugging/conf commands:\n"
|
||||
"C - set CAN speed (25-3000 kbaud)\n"
|
||||
"D - set CAN ID (11 bit)\n"
|
||||
"E - erase full flash storage\n"
|
||||
"F - change SPI flags (F f val), f== l-LSBFIRST, b-BR [18MHz/2^(b+1)], p-CPOL, h-CPHA\n"
|
||||
"G - get SPI status\n"
|
||||
"I - reinit SPI\n"
|
||||
"P - dump current config\n"
|
||||
"s - get state\n"
|
||||
"R - software reset\n"
|
||||
"S - send data over SPI\n"
|
||||
"T - show Tms value\n"
|
||||
"X - save current config to flash\n"
|
||||
;
|
||||
|
||||
#define STBUFSZ 255
|
||||
@ -190,15 +200,38 @@ static void errw(int e){
|
||||
add2buf("Error with code ");
|
||||
add2buf(u2str(e));
|
||||
if(e == 1) add2buf(" (busy or need initialization)");
|
||||
}else add2buf("OK");
|
||||
}else add2buf(OK);
|
||||
}
|
||||
|
||||
extern uint8_t usbON;
|
||||
const char *connmsgs[LENS_S_AMOUNT+1] = {
|
||||
[LENS_DISCONNECTED] = "disconnected",
|
||||
[LENS_SLEEPING] = "sleeping, need init",
|
||||
[LENS_OVERCURRENT] = "overcurrent",
|
||||
[LENS_INITIALIZED] = "initialized",
|
||||
[LENS_READY] = "ready",
|
||||
[LENS_ERR] = "error",
|
||||
[LENS_S_AMOUNT] = "wrong state"
|
||||
};
|
||||
const char *inimsgs[INI_S_AMOUNT+1] = {
|
||||
[INI_START] = "started",
|
||||
[INI_FGOTOZ] = "go to min F",
|
||||
[INI_FPREPMAX] = "prepare to go to max F",
|
||||
[INI_FGOTOMAX] = "go to max F",
|
||||
[INI_FPREPOLD] = "prepare to return to original F",
|
||||
[INI_FGOTOOLD] = "go to starting F",
|
||||
[INI_READY] = "ready",
|
||||
[INI_ERR] = "error in init procedure",
|
||||
[INI_S_AMOUNT] = "wrong state"
|
||||
};
|
||||
const char *parse_cmd(const char *buf){
|
||||
//uint32_t u3;
|
||||
initbuf();
|
||||
if(buf[1] == '\n' || !buf[1]){ // one symbol commands
|
||||
switch(*buf){
|
||||
case '-':
|
||||
flashstorage_init();
|
||||
break;
|
||||
case '0':
|
||||
errw(canon_sendcmd(CANON_FMIN));
|
||||
break;
|
||||
@ -206,7 +239,7 @@ const char *parse_cmd(const char *buf){
|
||||
errw(canon_sendcmd(CANON_FMAX));
|
||||
break;
|
||||
case 'f':
|
||||
errw(canon_focus(0));
|
||||
errw(canon_focus(-1));
|
||||
break;
|
||||
case 'i':
|
||||
errw(canon_getinfo());
|
||||
@ -217,6 +250,10 @@ const char *parse_cmd(const char *buf){
|
||||
case 'r':
|
||||
errw(canon_asku16(CANON_GETREG));
|
||||
break;
|
||||
case 'E':
|
||||
if(erase_storage(-1)) add2buf(FAIL);
|
||||
add2buf(OK);
|
||||
break;
|
||||
case 'F': // just watch SPI->CR1 value
|
||||
add2buf("SPI1->CR1="); add2buf(u2hexstr(SPI_CR1));
|
||||
break;
|
||||
@ -244,14 +281,33 @@ const char *parse_cmd(const char *buf){
|
||||
spi_setup();
|
||||
canon_init();
|
||||
break;
|
||||
case 'P':
|
||||
dump_userconf();
|
||||
return NULL;
|
||||
break;
|
||||
case 'R':
|
||||
USB_send("Soft reset\n");
|
||||
NVIC_SystemReset();
|
||||
break;
|
||||
case 's':
|
||||
add2buf("state=");
|
||||
uint16_t s = canon_getstate();
|
||||
uint8_t idx = s & 0xff;
|
||||
if(idx > LENS_S_AMOUNT) idx = LENS_S_AMOUNT;
|
||||
add2buf(connmsgs[idx]);
|
||||
idx = s >> 8;
|
||||
add2buf("\ninistate=");
|
||||
if(idx > INI_S_AMOUNT) idx = INI_S_AMOUNT;
|
||||
add2buf(inimsgs[idx]);
|
||||
break;
|
||||
case 'T':
|
||||
add2buf("Tms=");
|
||||
add2buf(u2str(Tms));
|
||||
break;
|
||||
case 'X':
|
||||
if(store_userconf()) add2buf(FAIL);
|
||||
else add2buf(OK);
|
||||
break;
|
||||
default:
|
||||
return helpmsg;
|
||||
}
|
||||
@ -260,22 +316,44 @@ const char *parse_cmd(const char *buf){
|
||||
}
|
||||
uint32_t D = 0, N = 0;
|
||||
char *nxt;
|
||||
switch(*buf){ // long messages
|
||||
switch(*buf++){ // long messages
|
||||
case 'a':
|
||||
nxt = getnum(buf, &D);
|
||||
if(nxt != buf){
|
||||
if(D) the_conf.autoinit = 1;
|
||||
else the_conf.autoinit = 0;
|
||||
}
|
||||
USB_send("autoinit="); USB_send(u2str(the_conf.autoinit)); USB_send("\n");
|
||||
break;
|
||||
case 'd':
|
||||
nxt = omit_spaces(buf+1);
|
||||
nxt = omit_spaces(buf);
|
||||
errw(canon_diaphragm(*nxt));
|
||||
break;
|
||||
case 'f': // move focus
|
||||
buf = omit_spaces(buf + 1);
|
||||
buf = omit_spaces(buf);
|
||||
int16_t neg = 1;
|
||||
if(*buf == '-'){ ++buf; neg = -1; }
|
||||
nxt = getnum(buf, &D);
|
||||
if(nxt == buf) add2buf("Need number");
|
||||
else if(D > 0x7fff) add2buf("From -0x7fff to 0x7fff");
|
||||
else errw(canon_focus(neg * (int32_t)D));
|
||||
else errw(canon_focus(neg * (int16_t)D));
|
||||
break;
|
||||
case 'C':
|
||||
nxt = getnum(buf, &D);
|
||||
if(nxt != buf && D >= 25 && D <= 3000){
|
||||
the_conf.canspeed = D;
|
||||
add2buf("CAN_speed="); add2buf(u2str(the_conf.canspeed));
|
||||
}else add2buf(FAIL);
|
||||
break;
|
||||
case 'D':
|
||||
nxt = getnum(buf, &D);
|
||||
if(nxt != buf && D < 0x800){
|
||||
the_conf.canID = D;
|
||||
add2buf("CAN_ID="); add2buf(u2str(the_conf.canID));
|
||||
}else add2buf(FAIL);
|
||||
break;
|
||||
case 'F': // SPI flags
|
||||
nxt = omit_spaces(buf+1);
|
||||
nxt = omit_spaces(buf);
|
||||
char c = *nxt;
|
||||
if(*nxt && *nxt != '\n'){
|
||||
buf = nxt + 1;
|
||||
@ -305,7 +383,6 @@ const char *parse_cmd(const char *buf){
|
||||
add2buf("SPI_CR1="); add2buf(u2hexstr(SPI_CR1));
|
||||
break;
|
||||
case 'S': // use stbuf here to store user data
|
||||
++buf;
|
||||
do{
|
||||
nxt = getnum(buf, &D);
|
||||
if(buf == nxt) break;
|
||||
@ -327,9 +404,14 @@ const char *parse_cmd(const char *buf){
|
||||
USB_send(u2hexstr(stbuf[i]));
|
||||
}
|
||||
USB_send("\n... ");
|
||||
canon_setlastcmd(stbuf[0]);
|
||||
if(N == SPI_transmit((uint8_t*)stbuf, (uint8_t)N)) USB_send("OK\n");
|
||||
else USB_send("Failed\n");
|
||||
if(N == SPI_transmit((uint8_t*)stbuf, (uint8_t)N)){
|
||||
USB_send("OK\nGot SPI answer: ");
|
||||
for(int i = 0; i < (int)N; ++i){
|
||||
if(i) USB_send(", ");
|
||||
USB_send(u2hexstr(stbuf[i]));
|
||||
}
|
||||
USB_send("\n");
|
||||
}else USB_send("Failed\n");
|
||||
return NULL;
|
||||
break;
|
||||
default:
|
||||
|
||||
@ -22,6 +22,15 @@
|
||||
|
||||
#include <stm32f1.h>
|
||||
|
||||
#define printu(x) do{USB_send(u2str(x));}while(0)
|
||||
#define printuhex(x) do{USB_send(uhex2str(x));}while(0)
|
||||
|
||||
#ifdef EBUG
|
||||
#define DBG(x) do{USB_send(x); USB_send("\n");}while(0)
|
||||
#else
|
||||
#define DBG(x)
|
||||
#endif
|
||||
|
||||
const char *parse_cmd(const char *buf);
|
||||
char *omit_spaces(const char *buf);
|
||||
char *getnum(const char *buf, uint32_t *N);
|
||||
|
||||
@ -34,7 +34,6 @@ static void mymemcpy(uint8_t *dest, uint8_t *src, int len){
|
||||
uint32_t SPI_CR1 = SPI_CR1_MSTR | SPI_CR1_BR | SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_CPHA | SPI_CR1_CPOL;
|
||||
|
||||
spiStatus SPI_status = SPI_NOTREADY;
|
||||
static uint8_t inbuff[SPIBUFSZ], lastlen = 0;
|
||||
|
||||
void spi_setup(){
|
||||
RCC->APB2ENR |= SPI_APB2; // Enable the peripheral clock SPI1
|
||||
@ -44,37 +43,40 @@ void spi_setup(){
|
||||
SPIx->CR1 |= SPI_CR1_SPE; // enable SPI
|
||||
}
|
||||
|
||||
volatile uint32_t wctr;
|
||||
#define WAITX(x) do{wctr = 0; while((x) && (++wctr < 360000)) IWDG->KR = IWDG_REFRESH; if(wctr==360000) return -1;}while(0)
|
||||
|
||||
/**
|
||||
* @brief SPI_transmit - transmit data over SPI DMA
|
||||
* @param buf - data to transmit
|
||||
* @param len - its length
|
||||
* @return amount of transmitted data
|
||||
* @return amount of transmitted data or -1 if error
|
||||
*/
|
||||
uint8_t SPI_transmit(const uint8_t *buf, uint8_t len){
|
||||
uint8_t SPI_transmit(uint8_t *buf, uint8_t len){
|
||||
if(!buf || !len) return 0; // bad data format
|
||||
if(SPI_status != SPI_READY) return 0; // spi not ready to transmit data
|
||||
#ifdef EBUG
|
||||
USB_send("SPI send "); USB_send(u2str(len));
|
||||
USB_send("bytes, data: ");
|
||||
#endif
|
||||
for(uint8_t x = 0; x < len; ++x){
|
||||
while(!(SPI1->SR & SPI_SR_TXE));
|
||||
WAITX(!(SPI1->SR & SPI_SR_TXE));
|
||||
SPI1->DR = buf[x];
|
||||
while(!(SPI1->SR & SPI_SR_BSY));
|
||||
while(!(SPI1->SR & SPI_SR_RXNE));
|
||||
inbuff[x] = SPI1->DR;
|
||||
for(int ctr = 0; ctr < 3600; ++ctr) nop(); // ~100mks delay
|
||||
WAITX(!(SPI1->SR & SPI_SR_BSY));
|
||||
#ifdef EBUG
|
||||
USB_send(u2hexstr(buf[x])); USB_send(", ");
|
||||
#endif
|
||||
WAITX(!(SPI1->SR & SPI_SR_RXNE));
|
||||
buf[x] = SPI1->DR;
|
||||
for(int ctr = 0; ctr < 3600; ++ctr) IWDG->KR = IWDG_REFRESH; // ~100mks delay
|
||||
}
|
||||
lastlen = len;
|
||||
#ifdef EBUG
|
||||
USB_send("\nReceive: ");
|
||||
for(int i = 0; i < len; ++i){
|
||||
USB_send(u2hexstr(buf[i])); USB_send(", ");
|
||||
}
|
||||
USB_send("\n");
|
||||
#endif
|
||||
return len;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SPI_receive - get received data
|
||||
* @param len (o) - received length
|
||||
* @return received buffer
|
||||
*/
|
||||
uint8_t *SPI_receive(uint8_t *len){
|
||||
if(SPI_status != SPI_READY) return NULL;
|
||||
if(lastlen == 0) return NULL;
|
||||
if(len) *len = lastlen;
|
||||
lastlen = 0;
|
||||
return inbuff;
|
||||
}
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
#ifndef SPI_H__
|
||||
#define SPI_H__
|
||||
|
||||
#include "stm32f1.h"
|
||||
#include <stm32f1.h>
|
||||
|
||||
extern uint32_t SPI_CR1;
|
||||
|
||||
@ -33,7 +33,6 @@ typedef enum{
|
||||
extern spiStatus SPI_status;
|
||||
|
||||
void spi_setup();
|
||||
uint8_t SPI_transmit(const uint8_t *buf, uint8_t len);
|
||||
uint8_t *SPI_receive(uint8_t *len);
|
||||
uint8_t SPI_transmit(uint8_t *buf, uint8_t len);
|
||||
|
||||
#endif // SPI_H__
|
||||
|
||||
@ -79,6 +79,9 @@ static void receive_Handler(){ // EP2OUT
|
||||
}
|
||||
|
||||
void usb_proc(){
|
||||
if(CAN1->RF0R & CAN_RF0R_FOVR0){ // FIFO overrun
|
||||
CAN1->RF0R &= ~CAN_RF0R_FOVR0;
|
||||
}
|
||||
switch(USB_Dev.USB_Status){
|
||||
case USB_STATE_CONFIGURED:
|
||||
// make new BULK endpoint
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
#define BUILD_NUMBER "50"
|
||||
#define BUILD_DATE "2022-09-10"
|
||||
#define BUILD_NUMBER "93"
|
||||
#define BUILD_DATE "2023-03-15"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 40,
|
||||
"active_layer_preset": "",
|
||||
"active_layer_preset": "All Layers",
|
||||
"auto_track_width": false,
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
@ -62,7 +62,7 @@
|
||||
35,
|
||||
36
|
||||
],
|
||||
"visible_layers": "ffbfeff_ffffffff",
|
||||
"visible_layers": "fffffff_ffffffff",
|
||||
"zone_display_mode": 1
|
||||
},
|
||||
"meta": {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user