mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2026-09-13 18:19:33 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
+2
-2
@@ -14,9 +14,9 @@ notifications:
|
|||||||
- "Firmware download : https://portapack-h1-builds.s3.amazonaws.com/%{repository_slug}/%{build_number}/%{build_number}.1/build/firmware/portapack-h1-firmware-%{commit}.tar.bz2"
|
- "Firmware download : https://portapack-h1-builds.s3.amazonaws.com/%{repository_slug}/%{build_number}/%{build_number}.1/build/firmware/portapack-h1-firmware-%{commit}.tar.bz2"
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2016q4/gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2 -O /tmp/gcc-arm.tar.bz2
|
- wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 -O /tmp/gcc-arm.tar.bz2
|
||||||
- tar -xf /tmp/gcc-arm.tar.bz2
|
- tar -xf /tmp/gcc-arm.tar.bz2
|
||||||
- export PATH=$PWD/gcc-arm-none-eabi-6_2-2016q4/bin:$PATH
|
- export PATH=$PWD/gcc-arm-none-eabi-6-2017-q2-update/bin:$PATH
|
||||||
- export CC="arm-none-eabi-gcc"
|
- export CC="arm-none-eabi-gcc"
|
||||||
- export CXX="arm-none-eabi-g++"
|
- export CXX="arm-none-eabi-g++"
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ set(CPPSRC
|
|||||||
${COMMON}/message_queue.cpp
|
${COMMON}/message_queue.cpp
|
||||||
${COMMON}/hackrf_hal.cpp
|
${COMMON}/hackrf_hal.cpp
|
||||||
portapack.cpp
|
portapack.cpp
|
||||||
|
${COMMON}/backlight.cpp
|
||||||
${COMMON}/portapack_shared_memory.cpp
|
${COMMON}/portapack_shared_memory.cpp
|
||||||
baseband_api.cpp
|
baseband_api.cpp
|
||||||
${COMMON}/portapack_persistent_memory.cpp
|
${COMMON}/portapack_persistent_memory.cpp
|
||||||
|
|||||||
@@ -125,11 +125,12 @@ void EventDispatcher::set_display_sleep(const bool sleep) {
|
|||||||
// TODO: Distribute display sleep message more broadly, shut down data generation
|
// TODO: Distribute display sleep message more broadly, shut down data generation
|
||||||
// on baseband side, since all that data is being discarded during sleep.
|
// on baseband side, since all that data is being discarded during sleep.
|
||||||
if( sleep ) {
|
if( sleep ) {
|
||||||
portapack::io.lcd_backlight(false);
|
portapack::backlight()->off();
|
||||||
portapack::display.sleep();
|
portapack::display.sleep();
|
||||||
} else {
|
} else {
|
||||||
portapack::display.wake();
|
portapack::display.wake();
|
||||||
portapack::io.lcd_backlight(true);
|
// Don't turn on backlight here.
|
||||||
|
// Let frame sync handler turn on backlight after repaint.
|
||||||
}
|
}
|
||||||
EventDispatcher::display_sleep = sleep;
|
EventDispatcher::display_sleep = sleep;
|
||||||
};
|
};
|
||||||
@@ -284,6 +285,8 @@ void EventDispatcher::handle_lcd_frame_sync() {
|
|||||||
DisplayFrameSyncMessage message;
|
DisplayFrameSyncMessage message;
|
||||||
message_map.send(&message);
|
message_map.send(&message);
|
||||||
painter.paint_widget_tree(top_widget);
|
painter.paint_widget_tree(top_widget);
|
||||||
|
|
||||||
|
portapack::backlight()->on();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventDispatcher::handle_switches() {
|
void EventDispatcher::handle_switches() {
|
||||||
|
|||||||
@@ -38,9 +38,13 @@
|
|||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
constexpr auto EVT_MASK_RTC_TICK = EVENT_MASK(0);
|
||||||
|
constexpr auto EVT_MASK_LCD_FRAME_SYNC = EVENT_MASK(1);
|
||||||
constexpr auto EVT_MASK_SWITCHES = EVENT_MASK(3);
|
constexpr auto EVT_MASK_SWITCHES = EVENT_MASK(3);
|
||||||
constexpr auto EVT_MASK_ENCODER = EVENT_MASK(4);
|
constexpr auto EVT_MASK_ENCODER = EVENT_MASK(4);
|
||||||
constexpr auto EVT_MASK_TOUCH = EVENT_MASK(5);
|
constexpr auto EVT_MASK_TOUCH = EVENT_MASK(5);
|
||||||
|
constexpr auto EVT_MASK_APPLICATION = EVENT_MASK(6);
|
||||||
|
constexpr auto EVT_MASK_LOCAL = EVENT_MASK(7);
|
||||||
|
|
||||||
class EventDispatcher {
|
class EventDispatcher {
|
||||||
public:
|
public:
|
||||||
@@ -65,14 +69,6 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void event_isr_rtc_tick() {
|
|
||||||
events_flag_isr(EVT_MASK_RTC_TICK);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void event_isr_lcd_frame_sync() {
|
|
||||||
events_flag_isr(EVT_MASK_LCD_FRAME_SYNC);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void events_flag(const eventmask_t events) {
|
static inline void events_flag(const eventmask_t events) {
|
||||||
if( thread_event_loop ) {
|
if( thread_event_loop ) {
|
||||||
chEvtSignal(thread_event_loop, events);
|
chEvtSignal(thread_event_loop, events);
|
||||||
@@ -92,11 +88,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr auto EVT_MASK_RTC_TICK = EVENT_MASK(0);
|
|
||||||
static constexpr auto EVT_MASK_LCD_FRAME_SYNC = EVENT_MASK(1);
|
|
||||||
static constexpr auto EVT_MASK_APPLICATION = EVENT_MASK(6);
|
|
||||||
static constexpr auto EVT_MASK_LOCAL = EVENT_MASK(7);
|
|
||||||
|
|
||||||
static Thread* thread_event_loop;
|
static Thread* thread_event_loop;
|
||||||
|
|
||||||
touch::Manager touch_manager { };
|
touch::Manager touch_manager { };
|
||||||
|
|||||||
@@ -40,6 +40,8 @@
|
|||||||
#include "hackrf_hal.hpp"
|
#include "hackrf_hal.hpp"
|
||||||
using namespace hackrf::one;
|
using namespace hackrf::one;
|
||||||
|
|
||||||
|
static Thread* thread_controls_event = NULL;
|
||||||
|
|
||||||
static std::array<Debounce, 7> switch_debounce;
|
static std::array<Debounce, 7> switch_debounce;
|
||||||
|
|
||||||
static Encoder encoder;
|
static Encoder encoder;
|
||||||
@@ -156,7 +158,7 @@ void timer0_callback(GPTDriver* const) {
|
|||||||
/* Signal event loop */
|
/* Signal event loop */
|
||||||
if( event_mask ) {
|
if( event_mask ) {
|
||||||
chSysLockFromIsr();
|
chSysLockFromIsr();
|
||||||
EventDispatcher::events_flag_isr(event_mask);
|
chEvtSignalI(thread_controls_event, event_mask);
|
||||||
chSysUnlockFromIsr();
|
chSysUnlockFromIsr();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -176,6 +178,8 @@ static GPTConfig timer0_config {
|
|||||||
};
|
};
|
||||||
|
|
||||||
void controls_init() {
|
void controls_init() {
|
||||||
|
thread_controls_event = chThdSelf();
|
||||||
|
|
||||||
touch::adc::start();
|
touch::adc::start();
|
||||||
|
|
||||||
/* GPT timer 0 is used to scan user interface controls -- touch screen,
|
/* GPT timer 0 is used to scan user interface controls -- touch screen,
|
||||||
|
|||||||
@@ -28,7 +28,10 @@
|
|||||||
|
|
||||||
#include "portapack_hal.hpp"
|
#include "portapack_hal.hpp"
|
||||||
|
|
||||||
|
static Thread* thread_lcd_frame_event = NULL;
|
||||||
|
|
||||||
static void pin_int4_interrupt_enable() {
|
static void pin_int4_interrupt_enable() {
|
||||||
|
thread_lcd_frame_event = chThdSelf();
|
||||||
nvicEnableVector(PIN_INT4_IRQn, CORTEX_PRIORITY_MASK(LPC43XX_PIN_INT4_IRQ_PRIORITY));
|
nvicEnableVector(PIN_INT4_IRQn, CORTEX_PRIORITY_MASK(LPC43XX_PIN_INT4_IRQ_PRIORITY));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +57,7 @@ CH_IRQ_HANDLER(PIN_INT4_IRQHandler) {
|
|||||||
CH_IRQ_PROLOGUE();
|
CH_IRQ_PROLOGUE();
|
||||||
|
|
||||||
chSysLockFromIsr();
|
chSysLockFromIsr();
|
||||||
EventDispatcher::event_isr_lcd_frame_sync();
|
chEvtSignalI(thread_lcd_frame_event, EVT_MASK_LCD_FRAME_SYNC);
|
||||||
chSysUnlockFromIsr();
|
chSysUnlockFromIsr();
|
||||||
|
|
||||||
LPC_GPIO_INT->IST = (1U << 4);
|
LPC_GPIO_INT->IST = (1U << 4);
|
||||||
|
|||||||
@@ -28,7 +28,10 @@ using namespace lpc43xx;
|
|||||||
|
|
||||||
#include "event_m0.hpp"
|
#include "event_m0.hpp"
|
||||||
|
|
||||||
|
static Thread* thread_rtc_event = NULL;
|
||||||
|
|
||||||
void rtc_interrupt_enable() {
|
void rtc_interrupt_enable() {
|
||||||
|
thread_rtc_event = chThdSelf();
|
||||||
rtc::interrupt::enable_second_inc();
|
rtc::interrupt::enable_second_inc();
|
||||||
nvicEnableVector(RTC_IRQn, CORTEX_PRIORITY_MASK(LPC_RTC_IRQ_PRIORITY));
|
nvicEnableVector(RTC_IRQn, CORTEX_PRIORITY_MASK(LPC_RTC_IRQ_PRIORITY));
|
||||||
}
|
}
|
||||||
@@ -39,7 +42,7 @@ CH_IRQ_HANDLER(RTC_IRQHandler) {
|
|||||||
CH_IRQ_PROLOGUE();
|
CH_IRQ_PROLOGUE();
|
||||||
|
|
||||||
chSysLockFromIsr();
|
chSysLockFromIsr();
|
||||||
EventDispatcher::event_isr_rtc_tick();
|
chEvtSignalI(thread_rtc_event, EVT_MASK_RTC_TICK);
|
||||||
chSysUnlockFromIsr();
|
chSysUnlockFromIsr();
|
||||||
|
|
||||||
rtc::interrupt::clear_all();
|
rtc::interrupt::clear_all();
|
||||||
|
|||||||
@@ -38,13 +38,11 @@
|
|||||||
|
|
||||||
|
|
||||||
#define LPC43XX_I2C_USE_I2C0 TRUE
|
#define LPC43XX_I2C_USE_I2C0 TRUE
|
||||||
#define LPC43XX_I2C_USE_I2C1 TRUE
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SPI driver system settings.
|
* SPI driver system settings.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LPC_SPI_USE_SSP0 TRUE
|
|
||||||
#define LPC_SPI_USE_SSP1 TRUE
|
#define LPC_SPI_USE_SSP1 TRUE
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ using namespace hackrf::one;
|
|||||||
|
|
||||||
#include "clock_manager.hpp"
|
#include "clock_manager.hpp"
|
||||||
|
|
||||||
|
#include "backlight.hpp"
|
||||||
#include "touch_adc.hpp"
|
#include "touch_adc.hpp"
|
||||||
#include "audio.hpp"
|
#include "audio.hpp"
|
||||||
|
|
||||||
@@ -48,18 +49,20 @@ namespace portapack {
|
|||||||
|
|
||||||
portapack::IO io {
|
portapack::IO io {
|
||||||
portapack::gpio_dir,
|
portapack::gpio_dir,
|
||||||
portapack::gpio_lcd_rd,
|
portapack::gpio_lcd_rdx,
|
||||||
portapack::gpio_lcd_wr,
|
portapack::gpio_lcd_wrx,
|
||||||
portapack::gpio_io_stbx,
|
portapack::gpio_io_stbx,
|
||||||
portapack::gpio_addr,
|
portapack::gpio_addr,
|
||||||
portapack::gpio_lcd_te,
|
portapack::gpio_lcd_te,
|
||||||
portapack::gpio_unused,
|
portapack::gpio_unused,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
portapack::BacklightCAT4004 backlight_cat4004;
|
||||||
|
portapack::BacklightOnOff backlight_on_off;
|
||||||
|
|
||||||
lcd::ILI9341 display;
|
lcd::ILI9341 display;
|
||||||
|
|
||||||
I2C i2c0(&I2CD0);
|
I2C i2c0(&I2CD0);
|
||||||
SPI ssp0(&SPID1);
|
|
||||||
SPI ssp1(&SPID2);
|
SPI ssp1(&SPID2);
|
||||||
|
|
||||||
si5351::Si5351 clock_generator {
|
si5351::Si5351 clock_generator {
|
||||||
@@ -152,6 +155,65 @@ static const portapack::cpld::Config& portapack_cpld_config() {
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Backlight* backlight() {
|
||||||
|
return (portapack_model() == PortaPackModel::R2_20170522)
|
||||||
|
? static_cast<portapack::Backlight*>(&backlight_cat4004)
|
||||||
|
: static_cast<portapack::Backlight*>(&backlight_on_off);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void configure_unused_mcu_peripherals(const bool enabled) {
|
||||||
|
/* Disabling these peripherals reduces "idle" (PortaPack at main
|
||||||
|
* menu) current by 42mA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Some surprising peripherals in use by PortaPack firmware:
|
||||||
|
*
|
||||||
|
* RITIMER: M0 SysTick substitute (because M0 has no SysTick)
|
||||||
|
* TIMER3: M0 cycle/PCLK counter
|
||||||
|
*/
|
||||||
|
|
||||||
|
const uint32_t clock_run_state = enabled ? 1 : 0;
|
||||||
|
|
||||||
|
LPC_CCU1->CLK_APB3_I2C1_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_APB3_DAC_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_APB3_CAN0_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_APB1_MOTOCON_PWM_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_APB1_CAN1_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_LCD_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_ETHERNET_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_USB0_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_EMC_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_SCT_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_USB1_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_EMCDIV_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_WWDT_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_USART0_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_UART1_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_SSP0_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_TIMER1_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_USART2_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_USART3_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_TIMER2_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_M4_QEI_CFG.RUN = clock_run_state;
|
||||||
|
|
||||||
|
LPC_CCU1->CLK_USB1_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU1->CLK_SPI_CFG.RUN = clock_run_state;
|
||||||
|
|
||||||
|
LPC_CCU2->CLK_APB2_USART3_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU2->CLK_APB2_USART2_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU2->CLK_APB0_UART1_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU2->CLK_APB0_USART0_CFG.RUN = clock_run_state;
|
||||||
|
LPC_CCU2->CLK_APB0_SSP0_CFG.RUN = clock_run_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void disable_unused_mcu_peripheral_clocks() {
|
||||||
|
configure_unused_mcu_peripherals(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void enable_unused_mcu_peripheral_clocks() {
|
||||||
|
configure_unused_mcu_peripherals(true);
|
||||||
|
}
|
||||||
|
|
||||||
static void shutdown_base() {
|
static void shutdown_base() {
|
||||||
clock_manager.shutdown();
|
clock_manager.shutdown();
|
||||||
|
|
||||||
@@ -162,6 +224,8 @@ static void shutdown_base() {
|
|||||||
|
|
||||||
systick_stop();
|
systick_stop();
|
||||||
|
|
||||||
|
enable_unused_mcu_peripheral_clocks();
|
||||||
|
|
||||||
hackrf::one::reset();
|
hackrf::one::reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,6 +254,10 @@ bool init() {
|
|||||||
| (0U << 15) // SDA: Enable input glitch filter
|
| (0U << 15) // SDA: Enable input glitch filter
|
||||||
;
|
;
|
||||||
|
|
||||||
|
disable_unused_mcu_peripheral_clocks();
|
||||||
|
|
||||||
|
LPC_CREG->CREG0 |= (1 << 5); // Disable USB0 PHY
|
||||||
|
|
||||||
power.init();
|
power.init();
|
||||||
|
|
||||||
gpio_max5864_select.set();
|
gpio_max5864_select.set();
|
||||||
@@ -235,6 +303,7 @@ bool init() {
|
|||||||
void shutdown() {
|
void shutdown() {
|
||||||
gpdma::controller.disable();
|
gpdma::controller.disable();
|
||||||
|
|
||||||
|
backlight()->off();
|
||||||
display.shutdown();
|
display.shutdown();
|
||||||
|
|
||||||
radio::disable();
|
radio::disable();
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
* Boston, MA 02110-1301, USA.
|
* Boston, MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "portapack_io.hpp"
|
#include "portapack_io.hpp"
|
||||||
|
|
||||||
#include "receiver_model.hpp"
|
#include "receiver_model.hpp"
|
||||||
@@ -28,6 +30,7 @@
|
|||||||
#include "spi_pp.hpp"
|
#include "spi_pp.hpp"
|
||||||
#include "si5351.hpp"
|
#include "si5351.hpp"
|
||||||
#include "lcd_ili9341.hpp"
|
#include "lcd_ili9341.hpp"
|
||||||
|
#include "backlight.hpp"
|
||||||
|
|
||||||
#include "radio.hpp"
|
#include "radio.hpp"
|
||||||
#include "clock_manager.hpp"
|
#include "clock_manager.hpp"
|
||||||
@@ -40,7 +43,6 @@ extern portapack::IO io;
|
|||||||
extern lcd::ILI9341 display;
|
extern lcd::ILI9341 display;
|
||||||
|
|
||||||
extern I2C i2c0;
|
extern I2C i2c0;
|
||||||
extern SPI ssp0;
|
|
||||||
extern SPI ssp1;
|
extern SPI ssp1;
|
||||||
|
|
||||||
extern si5351::Si5351 clock_generator;
|
extern si5351::Si5351 clock_generator;
|
||||||
@@ -56,4 +58,6 @@ extern TemperatureLogger temperature_logger;
|
|||||||
bool init();
|
bool init();
|
||||||
void shutdown();
|
void shutdown();
|
||||||
|
|
||||||
|
Backlight* backlight();
|
||||||
|
|
||||||
} /* namespace portapack */
|
} /* namespace portapack */
|
||||||
|
|||||||
@@ -586,10 +586,18 @@ void sdc_lld_start(SDCDriver *sdcp) {
|
|||||||
sdio_reset();
|
sdio_reset();
|
||||||
sdio_reset_card();
|
sdio_reset_card();
|
||||||
|
|
||||||
// UM10503 recommendation
|
// Test jig tests:
|
||||||
|
// SAMPLE_DELAY Write Read SDC FAIL OK
|
||||||
|
// 0 OK OK OK 3
|
||||||
|
// 2 OK OK OK 1
|
||||||
|
// 3 OK OK OK 1
|
||||||
|
// 4 OK f_read 1 0x2 3 2 (20170424 fails, 20170522 OK)
|
||||||
|
// 5 OK f_read 1 0x2 1
|
||||||
|
// UM10503 recommendation: SAMPLE_DELAY=0x8, DRV_DELAY=0xF
|
||||||
|
// Datasheet recommendation: SAMPLE_DELAY=0x9, DRV_DELAY=0xD
|
||||||
LPC_SCU->SDDELAY =
|
LPC_SCU->SDDELAY =
|
||||||
(0x8 << 0)
|
(0x0 << 0)
|
||||||
| (0xf << 8)
|
| (0xa << 8) /* >6ns hold with low clk/dat/cmd output drive */
|
||||||
;
|
;
|
||||||
LPC_SDMMC->CTRL =
|
LPC_SDMMC->CTRL =
|
||||||
(1U << 4) /* INT_ENABLE */
|
(1U << 4) /* INT_ENABLE */
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# FATFS files.
|
# FATFS files.
|
||||||
FATFSSRC = ${CHIBIOS_PORTAPACK}/os/various/fatfs_bindings/fatfs_diskio.c \
|
FATFSSRC = ${CHIBIOS_PORTAPACK}/os/various/fatfs_bindings/fatfs_diskio.c \
|
||||||
${CHIBIOS_PORTAPACK}/os/various/fatfs_bindings/fatfs_syscall.c \
|
${CHIBIOS_PORTAPACK}/os/various/fatfs_bindings/fatfs_syscall.c \
|
||||||
${CHIBIOS_PORTAPACK}/ext/fatfs/src/ff.c
|
${CHIBIOS_PORTAPACK}/ext/fatfs/src/ff.c \
|
||||||
|
${CHIBIOS_PORTAPACK}/ext/fatfs/src/option/unicode.c
|
||||||
|
|
||||||
FATFSINC = ${CHIBIOS_PORTAPACK}/ext/fatfs/src
|
FATFSINC = ${CHIBIOS_PORTAPACK}/ext/fatfs/src
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
FATFSSRC = ${CHIBIOS}/os/various/fatfs_bindings/fatfs_diskio.c \
|
FATFSSRC = ${CHIBIOS}/os/various/fatfs_bindings/fatfs_diskio.c \
|
||||||
${CHIBIOS}/os/various/fatfs_bindings/fatfs_syscall.c \
|
${CHIBIOS}/os/various/fatfs_bindings/fatfs_syscall.c \
|
||||||
${CHIBIOS}/ext/fatfs/src/ff.c \
|
${CHIBIOS}/ext/fatfs/src/ff.c \
|
||||||
${CHIBIOS}/ext/fatfs/src/option/ccsbcs.c
|
${CHIBIOS}/ext/fatfs/src/option/unicode.c
|
||||||
|
|
||||||
FATFSINC = ${CHIBIOS}/ext/fatfs/src
|
FATFSINC = ${CHIBIOS}/ext/fatfs/src
|
||||||
|
|||||||
@@ -210,10 +210,11 @@ void AK4951::microphone_enable() {
|
|||||||
// map.r.digital_mic.DMIC = 0;
|
// map.r.digital_mic.DMIC = 0;
|
||||||
// update(Register::DigitalMic);
|
// update(Register::DigitalMic);
|
||||||
|
|
||||||
map.r.signal_select_1.MGAIN20 = 0b110;
|
const uint_fast8_t mgain = 0b0111;
|
||||||
|
map.r.signal_select_1.MGAIN20 = mgain & 7;
|
||||||
map.r.signal_select_1.PMMP = 1;
|
map.r.signal_select_1.PMMP = 1;
|
||||||
map.r.signal_select_1.MPSEL = 1; // MPWR2 pin
|
map.r.signal_select_1.MPSEL = 1; // MPWR2 pin
|
||||||
map.r.signal_select_1.MGAIN3 = 0b0;
|
map.r.signal_select_1.MGAIN3 = (mgain >> 3) & 1;
|
||||||
update(Register::SignalSelect1);
|
update(Register::SignalSelect1);
|
||||||
|
|
||||||
map.r.signal_select_2.INL = 0b01; // Lch input signal = LIN2
|
map.r.signal_select_2.INL = 0b01; // Lch input signal = LIN2
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 Jared Boone, ShareBrained Technology, Inc.
|
||||||
|
*
|
||||||
|
* This file is part of PortaPack.
|
||||||
|
*
|
||||||
|
* 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, 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; see the file COPYING. If not, write to
|
||||||
|
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "backlight.hpp"
|
||||||
|
|
||||||
|
#include "portapack_io.hpp"
|
||||||
|
|
||||||
|
namespace portapack {
|
||||||
|
|
||||||
|
void BacklightOnOff::on() {
|
||||||
|
if( !is_on() ) {
|
||||||
|
io.lcd_backlight(true);
|
||||||
|
on_ = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BacklightOnOff::off() {
|
||||||
|
if( is_on() ) {
|
||||||
|
io.lcd_backlight(false);
|
||||||
|
on_ = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BacklightCAT4004::set_level(const value_t value) {
|
||||||
|
auto target = value;
|
||||||
|
|
||||||
|
// Clip target value to valid range.
|
||||||
|
if( target < 0 ) {
|
||||||
|
target = 0;
|
||||||
|
}
|
||||||
|
if( target > maximum_level ) {
|
||||||
|
target = maximum_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( is_on() ) {
|
||||||
|
pulses(target);
|
||||||
|
} else {
|
||||||
|
level_ = target;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BacklightCAT4004::on() {
|
||||||
|
if( !is_on() ) {
|
||||||
|
io.lcd_backlight(true);
|
||||||
|
halPolledDelay(ticks_setup);
|
||||||
|
on_ = true;
|
||||||
|
|
||||||
|
// Just enabled driver, initial value is maximum.
|
||||||
|
const auto target_level = level();
|
||||||
|
level_ = maximum_level;
|
||||||
|
|
||||||
|
pulses(target_level);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BacklightCAT4004::off() {
|
||||||
|
if( is_on() ) {
|
||||||
|
io.lcd_backlight(false);
|
||||||
|
chThdSleepMilliseconds(ms_pwrdwn);
|
||||||
|
on_ = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BacklightCAT4004::pulses(value_t target) {
|
||||||
|
while(level() != target) {
|
||||||
|
pulse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BacklightCAT4004::pulse() {
|
||||||
|
io.lcd_backlight(false);
|
||||||
|
halPolledDelay(ticks_lo);
|
||||||
|
io.lcd_backlight(true);
|
||||||
|
halPolledDelay(ticks_hi);
|
||||||
|
|
||||||
|
level_ -= 1;
|
||||||
|
if( level_ < 0 ) {
|
||||||
|
level_ = levels() - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} /* namespace portapack */
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 Jared Boone, ShareBrained Technology, Inc.
|
||||||
|
*
|
||||||
|
* This file is part of PortaPack.
|
||||||
|
*
|
||||||
|
* 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, 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; see the file COPYING. If not, write to
|
||||||
|
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace portapack {
|
||||||
|
|
||||||
|
class Backlight {
|
||||||
|
public:
|
||||||
|
using value_t = int_fast8_t;
|
||||||
|
|
||||||
|
virtual ~Backlight() = default;
|
||||||
|
|
||||||
|
virtual value_t levels() const = 0;
|
||||||
|
|
||||||
|
virtual void set_level(const value_t value) = 0;
|
||||||
|
virtual value_t level() const = 0;
|
||||||
|
|
||||||
|
virtual void increase() = 0;
|
||||||
|
virtual void decrease() = 0;
|
||||||
|
|
||||||
|
virtual void on() = 0;
|
||||||
|
virtual void off() = 0;
|
||||||
|
|
||||||
|
virtual bool is_on() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class BacklightBase : public Backlight {
|
||||||
|
public:
|
||||||
|
void increase() override {
|
||||||
|
set_level(level() + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void decrease() override {
|
||||||
|
set_level(level() - 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class BacklightOnOff : public BacklightBase {
|
||||||
|
public:
|
||||||
|
value_t levels() const override {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_level(const value_t) override {
|
||||||
|
}
|
||||||
|
|
||||||
|
value_t level() const override {
|
||||||
|
return levels() - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void on() override;
|
||||||
|
void off() override;
|
||||||
|
|
||||||
|
bool is_on() const override {
|
||||||
|
return on_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
static constexpr value_t maximum_level = 1;
|
||||||
|
|
||||||
|
bool on_ { false };
|
||||||
|
};
|
||||||
|
|
||||||
|
class BacklightCAT4004 : public BacklightBase {
|
||||||
|
public:
|
||||||
|
value_t levels() const override {
|
||||||
|
return maximum_level + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_level(const value_t value) override;
|
||||||
|
|
||||||
|
value_t level() const override {
|
||||||
|
return level_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void on() override;
|
||||||
|
void off() override;
|
||||||
|
|
||||||
|
bool is_on() const override {
|
||||||
|
return on_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
static constexpr value_t initial_brightness = 25;
|
||||||
|
static constexpr value_t maximum_level = 31;
|
||||||
|
|
||||||
|
static constexpr uint32_t ticks_setup = 204e6 * 10e-6;
|
||||||
|
static constexpr uint32_t ms_pwrdwn = 5;
|
||||||
|
static constexpr uint32_t ticks_lo = 204e6 * 1e-6;
|
||||||
|
static constexpr uint32_t ticks_hi = 204e6 * 1e-6;
|
||||||
|
|
||||||
|
value_t level_ { initial_brightness };
|
||||||
|
bool on_ { false };
|
||||||
|
|
||||||
|
void pulses(value_t target);
|
||||||
|
void pulse();
|
||||||
|
};
|
||||||
|
|
||||||
|
} /* namespace portapack */
|
||||||
@@ -99,6 +99,12 @@ public:
|
|||||||
shift_ir(static_cast<uint32_t>(instruction));
|
shift_ir(static_cast<uint32_t>(instruction));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void shift_dr(std::bitset<240>& value) {
|
||||||
|
for(size_t i=0; i<value.size(); i++) {
|
||||||
|
value[i] = shift_dr(1, value[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
jtag::JTAG& jtag;
|
jtag::JTAG& jtag;
|
||||||
|
|
||||||
@@ -148,6 +154,10 @@ private:
|
|||||||
void shift_ir(const uint32_t value) {
|
void shift_ir(const uint32_t value) {
|
||||||
jtag.shift_ir(IR_LENGTH, value);
|
jtag.shift_ir(IR_LENGTH, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t shift_dr(const size_t count, const uint32_t value) {
|
||||||
|
return jtag.shift_dr(count, value);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
class ModeISP {
|
class ModeISP {
|
||||||
|
|||||||
@@ -47,11 +47,17 @@ void lcd_reset() {
|
|||||||
|
|
||||||
void lcd_sleep_in() {
|
void lcd_sleep_in() {
|
||||||
io.lcd_data_write_command_and_data(0x10, {});
|
io.lcd_data_write_command_and_data(0x10, {});
|
||||||
|
// "It will be necessary to wait 5msec before sending next command,
|
||||||
|
// this is to allow time for the supply voltages and clock circuits
|
||||||
|
// to stabilize."
|
||||||
chThdSleepMilliseconds(5);
|
chThdSleepMilliseconds(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_sleep_out() {
|
void lcd_sleep_out() {
|
||||||
io.lcd_data_write_command_and_data(0x11, {});
|
io.lcd_data_write_command_and_data(0x11, {});
|
||||||
|
// "It will be necessary to wait 120msec after sending Sleep Out
|
||||||
|
// command (when in Sleep In Mode) before Sleep In command can be
|
||||||
|
// sent."
|
||||||
chThdSleepMilliseconds(120);
|
chThdSleepMilliseconds(120);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,6 +65,20 @@ void lcd_display_on() {
|
|||||||
io.lcd_data_write_command_and_data(0x29, {});
|
io.lcd_data_write_command_and_data(0x29, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lcd_display_off() {
|
||||||
|
io.lcd_data_write_command_and_data(0x28, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
void lcd_sleep() {
|
||||||
|
lcd_display_off();
|
||||||
|
lcd_sleep_in();
|
||||||
|
}
|
||||||
|
|
||||||
|
void lcd_wake() {
|
||||||
|
lcd_sleep_out();
|
||||||
|
lcd_display_on();
|
||||||
|
}
|
||||||
|
|
||||||
void lcd_init() {
|
void lcd_init() {
|
||||||
// LCDs are configured for IM[2:0] = 001
|
// LCDs are configured for IM[2:0] = 001
|
||||||
// 8080-I system, 16-bit parallel bus
|
// 8080-I system, 16-bit parallel bus
|
||||||
@@ -165,8 +185,7 @@ void lcd_init() {
|
|||||||
0x47, 0x04, 0x0C, 0x0B, 0x29, 0x2F, 0x05
|
0x47, 0x04, 0x0C, 0x0B, 0x29, 0x2F, 0x05
|
||||||
});
|
});
|
||||||
|
|
||||||
lcd_sleep_out();
|
lcd_wake();
|
||||||
lcd_display_on();
|
|
||||||
|
|
||||||
// Turn on Tearing Effect Line (TE) output signal.
|
// Turn on Tearing Effect Line (TE) output signal.
|
||||||
io.lcd_data_write_command_and_data(0x35, { 0b00000000 });
|
io.lcd_data_write_command_and_data(0x35, { 0b00000000 });
|
||||||
@@ -255,21 +274,18 @@ void lcd_vertical_scrolling_start_address(
|
|||||||
void ILI9341::init() {
|
void ILI9341::init() {
|
||||||
lcd_reset();
|
lcd_reset();
|
||||||
lcd_init();
|
lcd_init();
|
||||||
|
|
||||||
io.lcd_backlight(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ILI9341::shutdown() {
|
void ILI9341::shutdown() {
|
||||||
io.lcd_backlight(0);
|
|
||||||
lcd_reset();
|
lcd_reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ILI9341::sleep() {
|
void ILI9341::sleep() {
|
||||||
lcd_sleep_in();
|
lcd_sleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ILI9341::wake() {
|
void ILI9341::wake() {
|
||||||
lcd_sleep_out();
|
lcd_wake();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ILI9341::fill_rectangle(ui::Rect r, const ui::Color c) {
|
void ILI9341::fill_rectangle(ui::Rect r, const ui::Color c) {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace lcd {
|
|||||||
class ILI9341 {
|
class ILI9341 {
|
||||||
public:
|
public:
|
||||||
constexpr ILI9341(
|
constexpr ILI9341(
|
||||||
) : scroll_state { 0, 0, 320, 0 }
|
) : scroll_state { 0, 0, height(), 0 }
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,10 +105,10 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
struct scroll_t {
|
struct scroll_t {
|
||||||
uint16_t top_area;
|
ui::Coord top_area;
|
||||||
uint16_t bottom_area;
|
ui::Coord bottom_area;
|
||||||
uint16_t height;
|
ui::Dim height;
|
||||||
uint16_t current_position;
|
ui::Coord current_position;
|
||||||
};
|
};
|
||||||
|
|
||||||
scroll_t scroll_state;
|
scroll_t scroll_state;
|
||||||
|
|||||||
+12
-12
@@ -49,13 +49,13 @@ constexpr Pin pins[] = {
|
|||||||
[P1_3] = { 1, 3, { .mode=5, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* SSP1_MISO/P41: MAX2837.DOUT(O) */
|
[P1_3] = { 1, 3, { .mode=5, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* SSP1_MISO/P41: MAX2837.DOUT(O) */
|
||||||
[P1_4] = { 1, 4, { .mode=5, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* SSP1_MOSI/P40: MAX2837.DIN(I), MAX5864.DIN(I) */
|
[P1_4] = { 1, 4, { .mode=5, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* SSP1_MOSI/P40: MAX2837.DIN(I), MAX5864.DIN(I) */
|
||||||
[P1_5] = { 1, 5, { .mode=0, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* SD_POW: PortaPack CPLD.TDO(O) */
|
[P1_5] = { 1, 5, { .mode=0, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* SD_POW: PortaPack CPLD.TDO(O) */
|
||||||
[P1_6] = { 1, 6, { .mode=7, .pd=0, .pu=1, .fast=1, .input=1, .ifilt=0 } }, /* SD_CMD: PortaPack SD.CMD(IO) */
|
[P1_6] = { 1, 6, { .mode=7, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=0 } }, /* SD_CMD: PortaPack SD.CMD(IO) */
|
||||||
[P1_7] = { 1, 7, { .mode=0, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* !MIX_BYPASS/P35: U1.VCTL1(I), U11.VCTL2(I), U9.V2(I) */
|
[P1_7] = { 1, 7, { .mode=0, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* !MIX_BYPASS/P35: U1.VCTL1(I), U11.VCTL2(I), U9.V2(I) */
|
||||||
[P1_8] = { 1, 8, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* SD_VOLT0: PortaPack CPLD.TMS(I) */
|
[P1_8] = { 1, 8, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* SD_VOLT0: PortaPack CPLD.TMS(I) */
|
||||||
[P1_9] = { 1, 9, { .mode=7, .pd=0, .pu=1, .fast=1, .input=1, .ifilt=0 } }, /* SD_DAT0: PortaPack SD.DAT0(IO) */
|
[P1_9] = { 1, 9, { .mode=7, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=0 } }, /* SD_DAT0: PortaPack SD.DAT0(IO) */
|
||||||
[P1_10] = { 1, 10, { .mode=7, .pd=0, .pu=1, .fast=1, .input=1, .ifilt=0 } }, /* SD_DAT1: PortaPack SD.DAT1(IO) */
|
[P1_10] = { 1, 10, { .mode=7, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=0 } }, /* SD_DAT1: PortaPack SD.DAT1(IO) */
|
||||||
[P1_11] = { 1, 11, { .mode=7, .pd=0, .pu=1, .fast=1, .input=1, .ifilt=0 } }, /* SD_DAT2: PortaPack SD.DAT2(IO) */
|
[P1_11] = { 1, 11, { .mode=7, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=0 } }, /* SD_DAT2: PortaPack SD.DAT2(IO) */
|
||||||
[P1_12] = { 1, 12, { .mode=7, .pd=0, .pu=1, .fast=1, .input=1, .ifilt=0 } }, /* SD_DAT3: PortaPack SD.DAT3(IO) */
|
[P1_12] = { 1, 12, { .mode=7, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=0 } }, /* SD_DAT3: PortaPack SD.DAT3(IO) */
|
||||||
[P1_13] = { 1, 13, { .mode=7, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* SD_CD: PortaPack SD.CD(O) */
|
[P1_13] = { 1, 13, { .mode=7, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* SD_CD: PortaPack SD.CD(O) */
|
||||||
[P1_14] = { 1, 14, PinConfig::sgpio_out_fast_with_pullup(6) }, /* SGPIO10/P78/BANK2F3M8: CPLD.76/HOST_DISABLE(I) */
|
[P1_14] = { 1, 14, PinConfig::sgpio_out_fast_with_pullup(6) }, /* SGPIO10/P78/BANK2F3M8: CPLD.76/HOST_DISABLE(I) */
|
||||||
[P1_15] = { 1, 15, PinConfig::sgpio_inout_fast(2) }, /* SGPIO2/BANK2F3M9: CPLD.74/HOST_DATA2(IO) */
|
[P1_15] = { 1, 15, PinConfig::sgpio_inout_fast(2) }, /* SGPIO2/BANK2F3M9: CPLD.74/HOST_DATA2(IO) */
|
||||||
@@ -64,20 +64,20 @@ constexpr Pin pins[] = {
|
|||||||
[P1_18] = { 1, 18, PinConfig::gpio_out_with_pulldown(0) }, /* SGPIO12/BANK2F3M12: CPLD.70/HOST_INVERT(I) */
|
[P1_18] = { 1, 18, PinConfig::gpio_out_with_pulldown(0) }, /* SGPIO12/BANK2F3M12: CPLD.70/HOST_INVERT(I) */
|
||||||
[P1_19] = { 1, 19, { .mode=1, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* SSP1_SCK/P39: MAX2837.SCLK(I), MAX5864.SCLK(I) */
|
[P1_19] = { 1, 19, { .mode=1, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* SSP1_SCK/P39: MAX2837.SCLK(I), MAX5864.SCLK(I) */
|
||||||
[P1_20] = { 1, 20, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* CS_XCVR/P53: MAX2837.CS(I) */
|
[P1_20] = { 1, 20, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* CS_XCVR/P53: MAX2837.CS(I) */
|
||||||
[P2_0] = { 2, 0, { .mode=4, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* U0_TXD: PortaPack P2_0/IO_STBX */
|
[P2_0] = { 2, 0, { .mode=4, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* U0_TXD: PortaPack P2_0/IO_STBX */
|
||||||
[P2_1] = { 2, 1, { .mode=4, .pd=1, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* U0_RXD: PortaPack P2_1/ADDR */
|
[P2_1] = { 2, 1, { .mode=4, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* U0_RXD: PortaPack P2_1/ADDR */
|
||||||
[P2_2] = { 2, 2, PinConfig::sgpio_inout_fast(0) }, /* SGPIO6/BANK2F3M16: CPLD.61/HOST_DATA6(IO) */
|
[P2_2] = { 2, 2, PinConfig::sgpio_inout_fast(0) }, /* SGPIO6/BANK2F3M16: CPLD.61/HOST_DATA6(IO) */
|
||||||
[P2_3] = { 2, 3, { .mode=4, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* I2C1_SDA: PortaPack P2_3/LCD_TE */
|
[P2_3] = { 2, 3, { .mode=4, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* I2C1_SDA: PortaPack P2_3/LCD_TE */
|
||||||
[P2_4] = { 2, 4, { .mode=4, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* I2C1_SCL: PortaPack P2_4/<unused> */
|
[P2_4] = { 2, 4, { .mode=4, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* I2C1_SCL: PortaPack P2_4/LCD_RDX */
|
||||||
[P2_5] = { 2, 5, { .mode=4, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* RX/P43: U7.VCTL1(I), U10.VCTL1(I), U2.VCTL1(I) */
|
[P2_5] = { 2, 5, { .mode=4, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* RX/P43: U7.VCTL1(I), U10.VCTL1(I), U2.VCTL1(I) */
|
||||||
[P2_6] = { 2, 6, { .mode=4, .pd=0, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* MIXER_SCLK/P31: 33pF, RFFC5072.SCLK(I) */
|
[P2_6] = { 2, 6, { .mode=4, .pd=0, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* MIXER_SCLK/P31: 33pF, RFFC5072.SCLK(I) */
|
||||||
[P2_7] = { 2, 7, { .mode=0, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* ISP: 10K PU, Unused */
|
[P2_7] = { 2, 7, { .mode=0, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* ISP: 10K PU, Unused */
|
||||||
[P2_8] = { 2, 8, { .mode=4, .pd=0, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* P2_8: 10K PD, BOOT2, DFU switch, PortaPack P2_8/LCD_RD */
|
[P2_8] = { 2, 8, { .mode=4, .pd=0, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* P2_8: 10K PD, BOOT2, DFU switch, PortaPack P2_8/<unused> */
|
||||||
[P2_9] = { 2, 9, { .mode=0, .pd=0, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* P2_9: 10K PD, BOOT3, PortaPack P2_9/LCD_WR */
|
[P2_9] = { 2, 9, { .mode=0, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* P2_9: 10K PD, BOOT3, PortaPack P2_9/LCD_WRX */
|
||||||
[P2_10] = { 2, 10, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* AMP_BYPASS/P50: U14.V2(I), U12.V2(I) */
|
[P2_10] = { 2, 10, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* AMP_BYPASS/P50: U14.V2(I), U12.V2(I) */
|
||||||
[P2_11] = { 2, 11, { .mode=0, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* RX_AMP/P49: U12.V1(I), U14.V3(I) */
|
[P2_11] = { 2, 11, { .mode=0, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* RX_AMP/P49: U12.V1(I), U14.V3(I) */
|
||||||
[P2_12] = { 2, 12, { .mode=0, .pd=0, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* !RX_AMP_PWR/P52: 10K PU, Q1.G(I), power to U13 (RX amp) */
|
[P2_12] = { 2, 12, { .mode=0, .pd=0, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* !RX_AMP_PWR/P52: 10K PU, Q1.G(I), power to U13 (RX amp) */
|
||||||
[P2_13] = { 2, 13, { .mode=0, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* P2_13: PortaPack P2_13/DIR */
|
[P2_13] = { 2, 13, { .mode=0, .pd=0, .pu=0, .fast=0, .input=1, .ifilt=1 } }, /* P2_13: PortaPack P2_13/DIR */
|
||||||
[P3_0] = { 3, 0, { .mode=2, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_TX_SCK: PortaPack I2S0_TX_SCK(I) */
|
[P3_0] = { 3, 0, { .mode=2, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_TX_SCK: PortaPack I2S0_TX_SCK(I) */
|
||||||
[P3_1] = { 3, 1, { .mode=0, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* I2S0_RX_WS: PortaPack I2S0_TX_WS(I). Input enabled to fold back into RX. */
|
[P3_1] = { 3, 1, { .mode=0, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* I2S0_RX_WS: PortaPack I2S0_TX_WS(I). Input enabled to fold back into RX. */
|
||||||
[P3_2] = { 3, 2, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_RX_SDA: PortaPack I2S0_TX_SDA(I) */
|
[P3_2] = { 3, 2, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_RX_SDA: PortaPack I2S0_TX_SDA(I) */
|
||||||
@@ -130,7 +130,7 @@ constexpr Pin pins[] = {
|
|||||||
[P9_5] = { 9, 5, { .mode=3, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* CPLD_TDO: CPLD.TDO(O) */
|
[P9_5] = { 9, 5, { .mode=3, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* CPLD_TDO: CPLD.TDO(O) */
|
||||||
[P9_6] = { 9, 6, PinConfig::sgpio_in_fast(6) }, /* SGPIO8/SGPIO_CLK/P60: SI5351C.CLK2(O) */
|
[P9_6] = { 9, 6, PinConfig::sgpio_in_fast(6) }, /* SGPIO8/SGPIO_CLK/P60: SI5351C.CLK2(O) */
|
||||||
[PF_4] = { 15, 4, { .mode=7, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_RX_SCK: Unused */
|
[PF_4] = { 15, 4, { .mode=7, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_RX_SCK: Unused */
|
||||||
[CLK0] = { 24, 0, { .mode=4, .pd=1, .pu=0, .fast=1, .input=1, .ifilt=0 } }, /* SD_CLK: PortaPack SD.CLK, enable input buffer for timing feedback? */
|
[CLK0] = { 24, 0, { .mode=4, .pd=1, .pu=0, .fast=0, .input=1, .ifilt=0 } }, /* SD_CLK: PortaPack SD.CLK, enable input buffer for timing feedback? */
|
||||||
[CLK2] = { 24, 2, { .mode=6, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_TX_CLK: PortaPack I2S0_TX_MCLK */
|
[CLK2] = { 24, 2, { .mode=6, .pd=1, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_TX_CLK: PortaPack I2S0_TX_MCLK */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ constexpr GPIO gpio_io_stbx = gpio[GPIO5_0]; /* P2_0 */
|
|||||||
constexpr GPIO gpio_addr = gpio[GPIO5_1]; /* P2_1 */
|
constexpr GPIO gpio_addr = gpio[GPIO5_1]; /* P2_1 */
|
||||||
constexpr GPIO gpio_lcd_te = gpio[GPIO5_3]; /* P2_3 */
|
constexpr GPIO gpio_lcd_te = gpio[GPIO5_3]; /* P2_3 */
|
||||||
constexpr GPIO gpio_unused = gpio[GPIO5_7]; /* P2_8 */
|
constexpr GPIO gpio_unused = gpio[GPIO5_7]; /* P2_8 */
|
||||||
constexpr GPIO gpio_lcd_rd = gpio[GPIO5_4]; /* P2_4 */
|
constexpr GPIO gpio_lcd_rdx = gpio[GPIO5_4]; /* P2_4 */
|
||||||
constexpr GPIO gpio_lcd_wr = gpio[GPIO1_10]; /* P2_9 */
|
constexpr GPIO gpio_lcd_wrx = gpio[GPIO1_10]; /* P2_9 */
|
||||||
constexpr GPIO gpio_dir = gpio[GPIO1_13]; /* P2_13 */
|
constexpr GPIO gpio_dir = gpio[GPIO1_13]; /* P2_13 */
|
||||||
constexpr std::array<GPIO, 8> gpios_data {
|
constexpr std::array<GPIO, 8> gpios_data {
|
||||||
gpio[GPIO3_8],
|
gpio[GPIO3_8],
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ void IO::init() {
|
|||||||
addr(0);
|
addr(0);
|
||||||
|
|
||||||
gpio_dir.output();
|
gpio_dir.output();
|
||||||
gpio_lcd_rd.output();
|
gpio_lcd_rdx.output();
|
||||||
gpio_lcd_wr.output();
|
gpio_lcd_wrx.output();
|
||||||
gpio_io_stbx.output();
|
gpio_io_stbx.output();
|
||||||
gpio_addr.output();
|
gpio_addr.output();
|
||||||
gpio_rot_a.input();
|
gpio_rot_a.input();
|
||||||
@@ -57,17 +57,11 @@ void IO::lcd_backlight(const bool value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void IO::lcd_reset_state(const bool active) {
|
void IO::lcd_reset_state(const bool active) {
|
||||||
/* NOTE: This overwrites the contents of the IO register, which for now
|
|
||||||
* have no significance. But someday...?
|
|
||||||
*/
|
|
||||||
io_reg = (io_reg & 0xfe) | ((active ? 1 : 0) << 0);
|
io_reg = (io_reg & 0xfe) | ((active ? 1 : 0) << 0);
|
||||||
io_write(1, io_reg);
|
io_write(1, io_reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IO::audio_reset_state(const bool active) {
|
void IO::audio_reset_state(const bool active) {
|
||||||
/* Reset signal for audio codec. Some audio codecs (e.g. WM8731) do not
|
|
||||||
* implement reset signal, only soft reset via I2C.
|
|
||||||
*/
|
|
||||||
/* NOTE: This overwrites the contents of the IO register, which for now
|
/* NOTE: This overwrites the contents of the IO register, which for now
|
||||||
* have no significance. But someday...?
|
* have no significance. But someday...?
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -80,15 +80,15 @@ public:
|
|||||||
|
|
||||||
constexpr IO(
|
constexpr IO(
|
||||||
GPIO gpio_dir,
|
GPIO gpio_dir,
|
||||||
GPIO gpio_lcd_rd,
|
GPIO gpio_lcd_rdx,
|
||||||
GPIO gpio_lcd_wr,
|
GPIO gpio_lcd_wrx,
|
||||||
GPIO gpio_io_stbx,
|
GPIO gpio_io_stbx,
|
||||||
GPIO gpio_addr,
|
GPIO gpio_addr,
|
||||||
GPIO gpio_rot_a,
|
GPIO gpio_rot_a,
|
||||||
GPIO gpio_rot_b
|
GPIO gpio_rot_b
|
||||||
) : gpio_dir { gpio_dir },
|
) : gpio_dir { gpio_dir },
|
||||||
gpio_lcd_rd { gpio_lcd_rd },
|
gpio_lcd_rdx { gpio_lcd_rdx },
|
||||||
gpio_lcd_wr { gpio_lcd_wr },
|
gpio_lcd_wrx { gpio_lcd_wrx },
|
||||||
gpio_io_stbx { gpio_io_stbx },
|
gpio_io_stbx { gpio_io_stbx },
|
||||||
gpio_addr { gpio_addr },
|
gpio_addr { gpio_addr },
|
||||||
gpio_rot_a { gpio_rot_a },
|
gpio_rot_a { gpio_rot_a },
|
||||||
@@ -102,13 +102,24 @@ public:
|
|||||||
void lcd_reset_state(const bool active);
|
void lcd_reset_state(const bool active);
|
||||||
void audio_reset_state(const bool active);
|
void audio_reset_state(const bool active);
|
||||||
|
|
||||||
|
void lcd_data_write_command_and_data(
|
||||||
|
const uint_fast8_t command,
|
||||||
|
const uint8_t* data,
|
||||||
|
const size_t data_count
|
||||||
|
) {
|
||||||
|
lcd_command(command);
|
||||||
|
for(size_t i=0; i<data_count; i++) {
|
||||||
|
lcd_write_data(data[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void lcd_data_write_command_and_data(
|
void lcd_data_write_command_and_data(
|
||||||
const uint_fast8_t command,
|
const uint_fast8_t command,
|
||||||
const std::initializer_list<uint8_t>& data
|
const std::initializer_list<uint8_t>& data
|
||||||
) {
|
) {
|
||||||
lcd_command(command);
|
lcd_command(command);
|
||||||
for(const auto d : data) {
|
for(const auto d : data) {
|
||||||
lcd_write_data_fast(d);
|
lcd_write_data(d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,31 +130,31 @@ public:
|
|||||||
) {
|
) {
|
||||||
lcd_command(command);
|
lcd_command(command);
|
||||||
for(size_t i=0; i<data_count; i++) {
|
for(size_t i=0; i<data_count; i++) {
|
||||||
data[i] = lcd_read_data_id();
|
data[i] = lcd_read_data();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_write_word(const uint32_t w) {
|
void lcd_write_word(const uint32_t w) {
|
||||||
lcd_write_data_fast(w);
|
lcd_write_data(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_write_words(const uint16_t* const w, size_t n) {
|
void lcd_write_words(const uint16_t* const w, size_t n) {
|
||||||
for(size_t i=0; i<n; i++) {
|
for(size_t i=0; i<n; i++) {
|
||||||
lcd_write_data_fast(w[i]);
|
lcd_write_data(w[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_write_pixel(const ui::Color pixel) {
|
void lcd_write_pixel(const ui::Color pixel) {
|
||||||
lcd_write_data_fast(pixel.v);
|
lcd_write_data(pixel.v);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t lcd_read_word() {
|
uint32_t lcd_read_word() {
|
||||||
return lcd_read_data_frame_memory();
|
return lcd_read_data();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_write_pixels(const ui::Color pixel, size_t n) {
|
void lcd_write_pixels(const ui::Color pixel, size_t n) {
|
||||||
while(n--) {
|
while(n--) {
|
||||||
lcd_write_data_fast(pixel.v);
|
lcd_write_data(pixel.v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,13 +167,13 @@ public:
|
|||||||
void lcd_read_bytes(uint8_t* byte, size_t byte_count) {
|
void lcd_read_bytes(uint8_t* byte, size_t byte_count) {
|
||||||
size_t word_count = byte_count / 2;
|
size_t word_count = byte_count / 2;
|
||||||
while(word_count) {
|
while(word_count) {
|
||||||
const auto word = lcd_read_data_frame_memory();
|
const auto word = lcd_read_data();
|
||||||
*(byte++) = word >> 8;
|
*(byte++) = word >> 8;
|
||||||
*(byte++) = word >> 0;
|
*(byte++) = word >> 0;
|
||||||
word_count--;
|
word_count--;
|
||||||
}
|
}
|
||||||
if( byte_count & 1 ) {
|
if( byte_count & 1 ) {
|
||||||
const auto word = lcd_read_data_frame_memory();
|
const auto word = lcd_read_data();
|
||||||
*(byte++) = word >> 8;
|
*(byte++) = word >> 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -188,8 +199,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
const GPIO gpio_dir;
|
const GPIO gpio_dir;
|
||||||
const GPIO gpio_lcd_rd;
|
const GPIO gpio_lcd_rdx;
|
||||||
const GPIO gpio_lcd_wr;
|
const GPIO gpio_lcd_wrx;
|
||||||
const GPIO gpio_io_stbx;
|
const GPIO gpio_io_stbx;
|
||||||
const GPIO gpio_addr;
|
const GPIO gpio_addr;
|
||||||
const GPIO gpio_rot_a;
|
const GPIO gpio_rot_a;
|
||||||
@@ -202,19 +213,19 @@ private:
|
|||||||
uint8_t io_reg { 0x03 };
|
uint8_t io_reg { 0x03 };
|
||||||
|
|
||||||
void lcd_rd_assert() {
|
void lcd_rd_assert() {
|
||||||
gpio_lcd_rd.set();
|
gpio_lcd_rdx.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_rd_deassert() {
|
void lcd_rd_deassert() {
|
||||||
gpio_lcd_rd.clear();
|
gpio_lcd_rdx.set();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_wr_assert() {
|
void lcd_wr_assert() {
|
||||||
gpio_lcd_wr.set();
|
gpio_lcd_wrx.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_wr_deassert() {
|
void lcd_wr_deassert() {
|
||||||
gpio_lcd_wr.clear();
|
gpio_lcd_wrx.set();
|
||||||
}
|
}
|
||||||
|
|
||||||
void io_stb_assert() {
|
void io_stb_assert() {
|
||||||
@@ -287,7 +298,7 @@ private:
|
|||||||
addr(1); /* Set up for data phase (most likely after a command) */
|
addr(1); /* Set up for data phase (most likely after a command) */
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_write_data_fast(const uint32_t value) __attribute__((always_inline)) {
|
void lcd_write_data(const uint32_t value) __attribute__((always_inline)) {
|
||||||
// NOTE: Assumes and DIR=0 and ADDR=1 from command phase.
|
// NOTE: Assumes and DIR=0 and ADDR=1 from command phase.
|
||||||
data_write_high(value); /* Drive high byte */
|
data_write_high(value); /* Drive high byte */
|
||||||
__asm__("nop");
|
__asm__("nop");
|
||||||
@@ -300,42 +311,7 @@ private:
|
|||||||
lcd_wr_deassert(); /* Complete write operation */
|
lcd_wr_deassert(); /* Complete write operation */
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t lcd_read_data_id() {
|
uint32_t lcd_read_data() {
|
||||||
// NOTE: Assumes ADDR=1 from command phase.
|
|
||||||
dir_read();
|
|
||||||
|
|
||||||
/* Start read operation */
|
|
||||||
lcd_rd_assert();
|
|
||||||
/* Wait for passthrough data(15:8) to settle -- ~16ns (3 cycles) typical */
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
const auto value_high = data_read();
|
|
||||||
|
|
||||||
/* Latch data[7:0] */
|
|
||||||
lcd_rd_deassert();
|
|
||||||
/* Wait for latched data[7:0] to settle -- ~26ns (5 cycles) typical */
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
__asm__("nop");
|
|
||||||
|
|
||||||
const auto value_low = data_read();
|
|
||||||
return (value_high << 8) | value_low;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t lcd_read_data_frame_memory() {
|
|
||||||
// NOTE: Assumes ADDR=1 from command phase.
|
// NOTE: Assumes ADDR=1 from command phase.
|
||||||
dir_read();
|
dir_read();
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@ software-defined radio (SDR).
|
|||||||
Schematic
|
Schematic
|
||||||
=========
|
=========
|
||||||
|
|
||||||
The schematic was drawn using KiCad.
|
The schematic was drawn using KiCad 4.0.6.
|
||||||
|
|
||||||
Schematic symbols are cached in the design files, but are also
|
Schematic symbols are cached in the design files, but are also
|
||||||
available in a separate repository:
|
available in a separate repository:
|
||||||
@@ -35,7 +35,7 @@ the JTAG pins from the HackRF One's microcontroller.
|
|||||||
License
|
License
|
||||||
=======
|
=======
|
||||||
|
|
||||||
Copyright (C) 2013, 2014, 2015 Jared Boone, ShareBrained Technology, Inc.
|
Copyright (C) 2013-2017 Jared Boone, ShareBrained Technology, Inc.
|
||||||
|
|
||||||
These files are part of PortaPack.
|
These files are part of PortaPack.
|
||||||
|
|
||||||
|
|||||||
+745
-823
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ pcb_hole_pad_r = 5.6 / 2;
|
|||||||
h1_pcb_thickness = 1.64;
|
h1_pcb_thickness = 1.64;
|
||||||
pp_h1_pcb_thickness = 1.56;
|
pp_h1_pcb_thickness = 1.56;
|
||||||
|
|
||||||
spacer_height = 0.5 * 25.4;
|
spacer_height = 12.0;
|
||||||
|
|
||||||
bolt_drill_d = 3.0;
|
bolt_drill_d = 3.0;
|
||||||
pcb_attach_drills_depth = 4.0;
|
pcb_attach_drills_depth = 4.0;
|
||||||
@@ -17,7 +17,17 @@ case_thickness = 1.5;
|
|||||||
case_bottom_thickness = case_thickness * 2;
|
case_bottom_thickness = case_thickness * 2;
|
||||||
h1_pcb_bottom_clearance = 4.0;
|
h1_pcb_bottom_clearance = 4.0;
|
||||||
case_bottom_tool_r = 3.0;
|
case_bottom_tool_r = 3.0;
|
||||||
case_lid_thickness = 0.125 * 25.4;
|
|
||||||
|
h1_led_hole_diameter = 2;
|
||||||
|
h1_led_diffuser_thickness = 0.85;
|
||||||
|
|
||||||
|
case_pcb_n_clearance = h1_led_diffuser_thickness + 0.15;
|
||||||
|
case_pcb_w_clearance = pcb_case_clearance;
|
||||||
|
case_pcb_e_clearance = pcb_case_clearance;
|
||||||
|
case_pcb_s_clearance = pcb_case_clearance;
|
||||||
|
|
||||||
|
lcd_thickness = 3.8;
|
||||||
|
case_lid_thickness = 3.0 / 16.0 * 25.4;
|
||||||
|
|
||||||
case_height_above_datum = h1_pcb_thickness + spacer_height + pp_h1_pcb_thickness + case_lid_thickness;
|
case_height_above_datum = h1_pcb_thickness + spacer_height + pp_h1_pcb_thickness + case_lid_thickness;
|
||||||
case_height_below_datum = case_bottom_thickness + h1_pcb_bottom_clearance;
|
case_height_below_datum = case_bottom_thickness + h1_pcb_bottom_clearance;
|
||||||
@@ -27,19 +37,17 @@ attach_foot_r = pcb_hole_pad_r;
|
|||||||
attach_drill_r = bolt_drill_d / 2.0;
|
attach_drill_r = bolt_drill_d / 2.0;
|
||||||
|
|
||||||
case_bumper_d = 0.5 * 25.4;
|
case_bumper_d = 0.5 * 25.4;
|
||||||
case_bumper_clearance = 0.5;
|
case_bumper_clearance = 0.0;
|
||||||
case_bumper_emboss_depth = 1.0;
|
case_bumper_emboss_depth = 1.0;
|
||||||
|
|
||||||
case_radiused = true;
|
case_radiused = true;
|
||||||
|
|
||||||
case_bumper_inset_from_pcb_edge = case_radiused ? 10.0 : 8.0;
|
case_bumper_inset_from_pcb_edge = case_radiused ? 14.0 : 12.0;
|
||||||
|
|
||||||
mounting_drills = [
|
mounting_drills = [
|
||||||
[4, 4],
|
[4, 4],
|
||||||
[66, pcb_w - 4],
|
|
||||||
[116, 4],
|
[116, 4],
|
||||||
[4, pcb_w - 4],
|
[4, pcb_w - 4],
|
||||||
[71, pcb_w - 44],
|
|
||||||
[116, pcb_w - 4]
|
[116, pcb_w - 4]
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -58,7 +66,14 @@ module pcb_outline() {
|
|||||||
|
|
||||||
module pcb_outline_clearance() {
|
module pcb_outline_clearance() {
|
||||||
minkowski() {
|
minkowski() {
|
||||||
pcb_outline();
|
offset(r=-pcb_corner_r) {
|
||||||
circle(r=pcb_case_clearance);
|
polygon([
|
||||||
|
[0 - case_pcb_n_clearance, 0 - case_pcb_w_clearance],
|
||||||
|
[0 - case_pcb_n_clearance, pcb_w + case_pcb_e_clearance],
|
||||||
|
[pcb_l + case_pcb_s_clearance, pcb_w + case_pcb_e_clearance],
|
||||||
|
[pcb_l + case_pcb_s_clearance, 0 - case_pcb_w_clearance]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
circle(r=pcb_corner_r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,11 +18,9 @@ module attach_center() {
|
|||||||
|
|
||||||
module pcb_supports() {
|
module pcb_supports() {
|
||||||
translate(mounting_drills[0]) attach_corner();
|
translate(mounting_drills[0]) attach_corner();
|
||||||
translate(mounting_drills[1]) rotate(90) attach_side();
|
translate(mounting_drills[1]) rotate(90) attach_corner();
|
||||||
translate(mounting_drills[2]) rotate(90) attach_corner();
|
translate(mounting_drills[2]) rotate(270) attach_corner();
|
||||||
translate(mounting_drills[3]) rotate(270) attach_corner();
|
translate(mounting_drills[3]) rotate(180) attach_corner();
|
||||||
translate(mounting_drills[4]) attach_center();
|
|
||||||
translate(mounting_drills[5]) rotate(180) attach_corner();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module pcb_attach_drill_outline() {
|
module pcb_attach_drill_outline() {
|
||||||
|
|||||||
@@ -227,11 +227,9 @@ module led(refdes, c) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module led_drill() {
|
module led_drill() {
|
||||||
hole_diameter = 2;
|
|
||||||
|
|
||||||
translate([0, -0.25, -0.3]) {
|
translate([0, -0.25, -0.3]) {
|
||||||
rotate([90, 0, 0]) {
|
rotate([90, 0, 0]) {
|
||||||
cylinder(d=hole_diameter, h=10);
|
cylinder(d=h1_led_hole_diameter, h=10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -712,7 +710,6 @@ module micro_sd_drill(clearance) {
|
|||||||
|
|
||||||
module portapack_h1_pcb_mounting_hole_drills() {
|
module portapack_h1_pcb_mounting_hole_drills() {
|
||||||
translate([ 64, 104]) pcb_mounting_hole_drill();
|
translate([ 64, 104]) pcb_mounting_hole_drill();
|
||||||
translate([126, 104]) pcb_mounting_hole_drill();
|
|
||||||
translate([176, 104]) pcb_mounting_hole_drill();
|
translate([176, 104]) pcb_mounting_hole_drill();
|
||||||
translate([ 64, 171]) pcb_mounting_hole_drill();
|
translate([ 64, 171]) pcb_mounting_hole_drill();
|
||||||
translate([176, 171]) pcb_mounting_hole_drill();
|
translate([176, 171]) pcb_mounting_hole_drill();
|
||||||
@@ -810,7 +807,6 @@ module portapack_h1_stack_hackrf_one() {
|
|||||||
module portapack_h1_stack_spacers() {
|
module portapack_h1_stack_spacers() {
|
||||||
hackrf_one_transform() {
|
hackrf_one_transform() {
|
||||||
translate([ 64, 104]) spacer();
|
translate([ 64, 104]) spacer();
|
||||||
translate([126, 104]) spacer();
|
|
||||||
translate([176, 104]) spacer();
|
translate([176, 104]) spacer();
|
||||||
translate([ 64, 171]) spacer();
|
translate([ 64, 171]) spacer();
|
||||||
translate([176, 171]) spacer();
|
translate([176, 171]) spacer();
|
||||||
@@ -825,7 +821,6 @@ module portapack_h1_stack_screws() {
|
|||||||
screw_tz = spacer_height + pp_h1_pcb_thickness;
|
screw_tz = spacer_height + pp_h1_pcb_thickness;
|
||||||
translate([0, 0, screw_tz]) portapack_h1_transform() {
|
translate([0, 0, screw_tz]) portapack_h1_transform() {
|
||||||
translate([ 64, 104]) screw();
|
translate([ 64, 104]) screw();
|
||||||
translate([126, 104]) screw();
|
|
||||||
translate([176, 104]) screw();
|
translate([176, 104]) screw();
|
||||||
translate([ 64, 171]) screw();
|
translate([ 64, 171]) screw();
|
||||||
translate([176, 171]) screw();
|
translate([176, 171]) screw();
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -259,7 +259,6 @@ set_location_assignment PIN_4 -to LCD_BACKLIGHT
|
|||||||
set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to LCD_BACKLIGHT
|
set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to LCD_BACKLIGHT
|
||||||
set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_BACKLIGHT
|
set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_BACKLIGHT
|
||||||
set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_BACKLIGHT
|
set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_BACKLIGHT
|
||||||
set_instance_assignment -name PCI_IO OFF -to LCD_BACKLIGHT
|
|
||||||
set_location_assignment PIN_30 -to MCU_LCD_RD
|
set_location_assignment PIN_30 -to MCU_LCD_RD
|
||||||
set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_LCD_RD
|
set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_LCD_RD
|
||||||
set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_LCD_RD
|
set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_LCD_RD
|
||||||
@@ -287,3 +286,34 @@ set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_P2_
|
|||||||
set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_P2_8
|
set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_P2_8
|
||||||
set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
|
set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
|
||||||
set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
|
set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
|
||||||
|
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[15]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[14]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[13]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[12]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[11]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[10]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[9]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[8]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[7]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[6]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[5]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[4]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[3]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[2]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[1]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[0]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[7]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[6]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[5]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[4]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[3]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[2]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[1]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[0]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_ADDR
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_DIR
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_IO_STBX
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_LCD_RD
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_LCD_WR
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_P2_8
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ set lcd_data_wr_hold 10.0
|
|||||||
# Create Clock
|
# Create Clock
|
||||||
#**************************************************************
|
#**************************************************************
|
||||||
|
|
||||||
create_clock -name {MCU_STROBE} -period 66.000 -waveform { 0.000 33.000 } [get_ports {MCU_STROBE}]
|
create_clock -name {MCU_LCD_WRX} -period 66.000 -waveform { 0.000 33.000 } [get_ports {MCU_LCD_WRX}]
|
||||||
#create_clock -name strobe_virt -period 66.000
|
#create_clock -name strobe_virt -period 66.000
|
||||||
|
|
||||||
#**************************************************************
|
#**************************************************************
|
||||||
@@ -88,8 +88,8 @@ create_clock -name {MCU_STROBE} -period 66.000 -waveform { 0.000 33.000 } [get_p
|
|||||||
# Set False Path
|
# Set False Path
|
||||||
#**************************************************************
|
#**************************************************************
|
||||||
|
|
||||||
set_false_path -from [get_clocks {MCU_STROBE}] -to [get_ports {TP_D TP_L TP_R TP_U}]
|
#set_false_path -from [get_clocks {MCU_IO_STBX}] -to [get_ports {TP_D TP_L TP_R TP_U}]
|
||||||
set_false_path -from [get_ports {SW_D SW_L SW_R SW_ROT_A SW_ROT_B SW_SEL SW_U}] -to [get_ports {MCU_D[*]}]
|
#set_false_path -from [get_ports {SW_D SW_L SW_R SW_ROT_A SW_ROT_B SW_SEL SW_U}] -to [get_ports {MCU_D[*]}]
|
||||||
|
|
||||||
|
|
||||||
#**************************************************************
|
#**************************************************************
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ entity top is
|
|||||||
MCU_D : inout std_logic_vector(7 downto 0);
|
MCU_D : inout std_logic_vector(7 downto 0);
|
||||||
MCU_DIR : in std_logic;
|
MCU_DIR : in std_logic;
|
||||||
MCU_IO_STBX : in std_logic;
|
MCU_IO_STBX : in std_logic;
|
||||||
MCU_LCD_WR : in std_logic;
|
MCU_LCD_WRX : in std_logic;
|
||||||
MCU_ADDR : in std_logic;
|
MCU_ADDR : in std_logic;
|
||||||
MCU_LCD_TE : out std_logic;
|
MCU_LCD_TE : out std_logic;
|
||||||
MCU_P2_8 : in std_logic;
|
MCU_P2_8 : in std_logic;
|
||||||
MCU_LCD_RD : in std_logic;
|
MCU_LCD_RDX : in std_logic;
|
||||||
|
|
||||||
TP_U : out std_logic;
|
TP_U : out std_logic;
|
||||||
TP_D : out std_logic;
|
TP_D : out std_logic;
|
||||||
@@ -112,13 +112,13 @@ begin
|
|||||||
io_strobe <= (MCU_IO_STBX = '0');
|
io_strobe <= (MCU_IO_STBX = '0');
|
||||||
io_read_strobe <= io_strobe and dir_read;
|
io_read_strobe <= io_strobe and dir_read;
|
||||||
|
|
||||||
lcd_read_strobe <= (MCU_LCD_RD = '1');
|
lcd_read_strobe <= (MCU_LCD_RDX = '0');
|
||||||
lcd_write <= not lcd_read_strobe;
|
lcd_write <= not lcd_read_strobe;
|
||||||
|
|
||||||
-- LCD interface
|
-- LCD interface
|
||||||
LCD_RS <= MCU_ADDR;
|
LCD_RS <= MCU_ADDR;
|
||||||
LCD_RDX <= not MCU_LCD_RD;
|
LCD_RDX <= MCU_LCD_RDX;
|
||||||
LCD_WRX <= not MCU_LCD_WR;
|
LCD_WRX <= MCU_LCD_WRX;
|
||||||
|
|
||||||
lcd_data_out <= lcd_data_out_q & mcu_data_in;
|
lcd_data_out <= lcd_data_out_q & mcu_data_in;
|
||||||
lcd_data_in <= LCD_DB;
|
lcd_data_in <= LCD_DB;
|
||||||
@@ -136,17 +136,17 @@ begin
|
|||||||
|
|
||||||
-- Synchronous behaviors:
|
-- Synchronous behaviors:
|
||||||
-- LCD write: Capture LCD high byte on LCD_WRX falling edge.
|
-- LCD write: Capture LCD high byte on LCD_WRX falling edge.
|
||||||
process(MCU_LCD_WR, mcu_data_in)
|
process(MCU_LCD_WRX, mcu_data_in)
|
||||||
begin
|
begin
|
||||||
if rising_edge(MCU_LCD_WR) then
|
if falling_edge(MCU_LCD_WRX) then
|
||||||
lcd_data_out_q <= mcu_data_in;
|
lcd_data_out_q <= mcu_data_in;
|
||||||
end if;
|
end if;
|
||||||
end process;
|
end process;
|
||||||
|
|
||||||
-- LCD read: Capture LCD low byte on LCD_RD falling edge.
|
-- LCD read: Capture LCD low byte on LCD_RD falling edge.
|
||||||
process(MCU_LCD_RD, lcd_data_in)
|
process(MCU_LCD_RDX, lcd_data_in)
|
||||||
begin
|
begin
|
||||||
if falling_edge(MCU_LCD_RD) then
|
if rising_edge(MCU_LCD_RDX) then
|
||||||
lcd_data_in_q <= lcd_data_in(7 downto 0);
|
lcd_data_in_q <= lcd_data_in(7 downto 0);
|
||||||
end if;
|
end if;
|
||||||
end process;
|
end process;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -290,3 +290,34 @@ set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_P2_
|
|||||||
set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_P2_8
|
set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_P2_8
|
||||||
set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
|
set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
|
||||||
set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
|
set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
|
||||||
|
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[15]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[14]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[13]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[12]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[11]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[10]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[9]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[8]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[7]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[6]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[5]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[4]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[3]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[2]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[1]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to LCD_DB[0]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[7]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[6]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[5]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[4]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[3]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[2]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[1]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_D[0]
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_ADDR
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_DIR
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_IO_STBX
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_LCD_RD
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_LCD_WR
|
||||||
|
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to MCU_P2_8
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ set lcd_data_wr_hold 10.0
|
|||||||
# Create Clock
|
# Create Clock
|
||||||
#**************************************************************
|
#**************************************************************
|
||||||
|
|
||||||
create_clock -name {MCU_LCD_WR} -period 66.000 -waveform { 0.000 33.000 } [get_ports {MCU_LCD_WR}]
|
create_clock -name {MCU_LCD_WRX} -period 66.000 -waveform { 0.000 33.000 } [get_ports {MCU_LCD_WRX}]
|
||||||
#create_clock -name strobe_virt -period 66.000
|
#create_clock -name strobe_virt -period 66.000
|
||||||
|
|
||||||
#**************************************************************
|
#**************************************************************
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ entity top is
|
|||||||
MCU_D : inout std_logic_vector(7 downto 0);
|
MCU_D : inout std_logic_vector(7 downto 0);
|
||||||
MCU_DIR : in std_logic;
|
MCU_DIR : in std_logic;
|
||||||
MCU_IO_STBX : in std_logic;
|
MCU_IO_STBX : in std_logic;
|
||||||
MCU_LCD_WR : in std_logic;
|
MCU_LCD_WRX : in std_logic;
|
||||||
MCU_ADDR : in std_logic;
|
MCU_ADDR : in std_logic;
|
||||||
MCU_LCD_TE : out std_logic;
|
MCU_LCD_TE : out std_logic;
|
||||||
MCU_P2_8 : in std_logic;
|
MCU_P2_8 : in std_logic;
|
||||||
MCU_LCD_RD : in std_logic;
|
MCU_LCD_RDX : in std_logic;
|
||||||
|
|
||||||
TP_U : out std_logic;
|
TP_U : out std_logic;
|
||||||
TP_D : out std_logic;
|
TP_D : out std_logic;
|
||||||
@@ -116,13 +116,13 @@ begin
|
|||||||
io_strobe <= (MCU_IO_STBX = '0');
|
io_strobe <= (MCU_IO_STBX = '0');
|
||||||
io_read_strobe <= io_strobe and dir_read;
|
io_read_strobe <= io_strobe and dir_read;
|
||||||
|
|
||||||
lcd_read_strobe <= (MCU_LCD_RD = '1');
|
lcd_read_strobe <= (MCU_LCD_RDX = '0');
|
||||||
lcd_write <= not lcd_read_strobe;
|
lcd_write <= not lcd_read_strobe;
|
||||||
|
|
||||||
-- LCD interface
|
-- LCD interface
|
||||||
LCD_RS <= MCU_ADDR;
|
LCD_RS <= MCU_ADDR;
|
||||||
LCD_RDX <= not MCU_LCD_RD;
|
LCD_RDX <= MCU_LCD_RDX;
|
||||||
LCD_WRX <= not MCU_LCD_WR;
|
LCD_WRX <= MCU_LCD_WRX;
|
||||||
|
|
||||||
lcd_data_out <= lcd_data_out_q & mcu_data_in;
|
lcd_data_out <= lcd_data_out_q & mcu_data_in;
|
||||||
lcd_data_in <= LCD_DB;
|
lcd_data_in <= LCD_DB;
|
||||||
@@ -141,17 +141,17 @@ begin
|
|||||||
|
|
||||||
-- Synchronous behaviors:
|
-- Synchronous behaviors:
|
||||||
-- LCD write: Capture LCD high byte on LCD_WRX falling edge.
|
-- LCD write: Capture LCD high byte on LCD_WRX falling edge.
|
||||||
process(MCU_LCD_WR, mcu_data_in)
|
process(MCU_LCD_WRX, mcu_data_in)
|
||||||
begin
|
begin
|
||||||
if rising_edge(MCU_LCD_WR) then
|
if falling_edge(MCU_LCD_WRX) then
|
||||||
lcd_data_out_q <= mcu_data_in;
|
lcd_data_out_q <= mcu_data_in;
|
||||||
end if;
|
end if;
|
||||||
end process;
|
end process;
|
||||||
|
|
||||||
-- LCD read: Capture LCD low byte on LCD_RD falling edge.
|
-- LCD read: Capture LCD low byte on LCD_RD falling edge.
|
||||||
process(MCU_LCD_RD, lcd_data_in)
|
process(MCU_LCD_RDX, lcd_data_in)
|
||||||
begin
|
begin
|
||||||
if falling_edge(MCU_LCD_RD) then
|
if rising_edge(MCU_LCD_RDX) then
|
||||||
lcd_data_in_q <= lcd_data_in(7 downto 0);
|
lcd_data_in_q <= lcd_data_in(7 downto 0);
|
||||||
end if;
|
end if;
|
||||||
end process;
|
end process;
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
(fp_lib_table
|
||||||
|
(lib (name alps)(type KiCad)(uri ${KISBLIB}/alps.pretty)(options "")(descr ""))
|
||||||
|
(lib (name bat_coin)(type KiCad)(uri ${KISBLIB}/bat_coin.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ck)(type KiCad)(uri ${KISBLIB}/ck.pretty)(options "")(descr ""))
|
||||||
|
(lib (name cui)(type KiCad)(uri ${KISBLIB}/cui.pretty)(options "")(descr ""))
|
||||||
|
(lib (name eastrising)(type KiCad)(uri ${KISBLIB}/eastrising.pretty)(options "")(descr ""))
|
||||||
|
(lib (name fiducial)(type KiCad)(uri ${KISBLIB}/fiducial.pretty)(options "")(descr ""))
|
||||||
|
(lib (name header)(type KiCad)(uri ${KISBLIB}/header.pretty)(options "")(descr ""))
|
||||||
|
(lib (name hole)(type KiCad)(uri ${KISBLIB}/hole.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_capae)(type KiCad)(uri ${KISBLIB}/ipc_capae.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_capc)(type KiCad)(uri ${KISBLIB}/ipc_capc.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_indc)(type KiCad)(uri ${KISBLIB}/ipc_indc.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_qfn)(type KiCad)(uri ${KISBLIB}/ipc_qfn.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_qfp)(type KiCad)(uri ${KISBLIB}/ipc_qfp.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_resc)(type KiCad)(uri ${KISBLIB}/ipc_resc.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_son)(type KiCad)(uri ${KISBLIB}/ipc_son.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_sop)(type KiCad)(uri ${KISBLIB}/ipc_sop.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_sot)(type KiCad)(uri ${KISBLIB}/ipc_sot.pretty)(options "")(descr ""))
|
||||||
|
(lib (name jst)(type KiCad)(uri ${KISBLIB}/jst.pretty)(options "")(descr ""))
|
||||||
|
(lib (name molex)(type KiCad)(uri ${KISBLIB}/molex.pretty)(options "")(descr ""))
|
||||||
|
(lib (name on_semi)(type KiCad)(uri ${KISBLIB}/on_semi.pretty)(options "")(descr ""))
|
||||||
|
(lib (name tp)(type KiCad)(uri ${KISBLIB}/tp.pretty)(options "")(descr ""))
|
||||||
|
(lib (name ipc_ledc)(type KiCad)(uri ${KISBLIB}/ipc_ledc.pretty)(options "")(descr ""))
|
||||||
|
(lib (name sharebrained)(type KiCad)(uri ${KISBLIB}/sharebrained.pretty)(options "")(descr ""))
|
||||||
|
)
|
||||||
+562
-944
File diff suppressed because it is too large
Load Diff
+519
-390
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1290
-1066
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
update=Wednesday, July 15, 2015 'PMt' 10:20:27 PM
|
update=Mon 19 Jun 2017 03:56:47 PM PDT
|
||||||
version=1
|
version=1
|
||||||
last_client=kicad
|
last_client=kicad
|
||||||
[cvpcb]
|
[cvpcb]
|
||||||
@@ -6,65 +6,58 @@ version=1
|
|||||||
NetIExt=net
|
NetIExt=net
|
||||||
[cvpcb/libraries]
|
[cvpcb/libraries]
|
||||||
EquName1=devcms
|
EquName1=devcms
|
||||||
[pcbnew]
|
|
||||||
version=1
|
|
||||||
LastNetListRead=
|
|
||||||
UseCmpFile=1
|
|
||||||
PadDrill=0.600000000000
|
|
||||||
PadDrillOvalY=0.600000000000
|
|
||||||
PadSizeH=1.500000000000
|
|
||||||
PadSizeV=1.500000000000
|
|
||||||
PcbTextSizeV=1.500000000000
|
|
||||||
PcbTextSizeH=1.500000000000
|
|
||||||
PcbTextThickness=0.300000000000
|
|
||||||
ModuleTextSizeV=1.000000000000
|
|
||||||
ModuleTextSizeH=1.000000000000
|
|
||||||
ModuleTextSizeThickness=0.150000000000
|
|
||||||
SolderMaskClearance=0.000000000000
|
|
||||||
SolderMaskMinWidth=0.000000000000
|
|
||||||
DrawSegmentWidth=0.200000000000
|
|
||||||
BoardOutlineThickness=0.100000000000
|
|
||||||
ModuleOutlineThickness=0.150000000000
|
|
||||||
[pcbnew/libraries]
|
|
||||||
LibDir=../../../library-kicad
|
|
||||||
LibName1=sockets
|
|
||||||
LibName2=connect
|
|
||||||
LibName3=discret
|
|
||||||
LibName4=pin_array
|
|
||||||
LibName5=divers
|
|
||||||
LibName6=smd_capacitors
|
|
||||||
LibName7=smd_resistors
|
|
||||||
LibName8=smd_crystal&oscillator
|
|
||||||
LibName9=smd_dil
|
|
||||||
LibName10=smd_transistors
|
|
||||||
LibName11=libcms
|
|
||||||
LibName12=display
|
|
||||||
LibName13=led
|
|
||||||
LibName14=dip_sockets
|
|
||||||
LibName15=pga_sockets
|
|
||||||
LibName16=valves
|
|
||||||
[general]
|
[general]
|
||||||
version=1
|
version=1
|
||||||
[eeschema]
|
[eeschema]
|
||||||
version=1
|
version=1
|
||||||
LibDir=../../../library-kicad
|
LibDir=../../../library-kicad
|
||||||
[eeschema/libraries]
|
[eeschema/libraries]
|
||||||
LibName1=hackrf_expansion
|
LibName1=portapack_h1-rescue
|
||||||
LibName2=wolfson
|
LibName2=hackrf_expansion
|
||||||
LibName3=passive
|
LibName3=passive
|
||||||
LibName4=lcd_kingtech
|
LibName4=supply
|
||||||
LibName5=supply
|
LibName5=trs_jack
|
||||||
LibName6=io_expander
|
LibName6=battery
|
||||||
LibName7=trs_jack
|
LibName7=sd
|
||||||
LibName8=battery
|
LibName8=ck
|
||||||
LibName9=mosfet
|
LibName9=altera
|
||||||
LibName10=microphone
|
LibName10=regulator
|
||||||
LibName11=sd
|
LibName11=tp
|
||||||
LibName12=ck
|
LibName12=header
|
||||||
LibName13=altera
|
LibName13=hole
|
||||||
LibName14=regulator
|
LibName14=sharebrained
|
||||||
LibName15=tp
|
LibName15=fiducial
|
||||||
LibName16=header
|
LibName16=eastrising
|
||||||
LibName17=hole
|
LibName17=on_semi
|
||||||
LibName18=sharebrained
|
LibName18=asahi_kasei
|
||||||
LibName19=fiducial
|
LibName19=ti
|
||||||
|
LibName20=diode
|
||||||
|
[pcbnew]
|
||||||
|
version=1
|
||||||
|
PageLayoutDescrFile=
|
||||||
|
LastNetListRead=portapack_h1.net
|
||||||
|
PadDrill=0
|
||||||
|
PadDrillOvalY=0
|
||||||
|
PadSizeH=2.25
|
||||||
|
PadSizeV=2.25
|
||||||
|
PcbTextSizeV=1.5
|
||||||
|
PcbTextSizeH=1.5
|
||||||
|
PcbTextThickness=0.3
|
||||||
|
ModuleTextSizeV=0.6095999999999999
|
||||||
|
ModuleTextSizeH=0.6095999999999999
|
||||||
|
ModuleTextSizeThickness=0.12
|
||||||
|
SolderMaskClearance=0.07619999999999999
|
||||||
|
SolderMaskMinWidth=0.1016
|
||||||
|
DrawSegmentWidth=0.1524
|
||||||
|
BoardOutlineThickness=0.09999999999999999
|
||||||
|
ModuleOutlineThickness=0.1524
|
||||||
|
[schematic_editor]
|
||||||
|
version=1
|
||||||
|
PageLayoutDescrFile=
|
||||||
|
PlotDirectoryName=
|
||||||
|
SubpartIdSeparator=0
|
||||||
|
SubpartFirstId=65
|
||||||
|
NetFmtName=Pcbnew
|
||||||
|
SpiceForceRefPrefix=0
|
||||||
|
SpiceUseNetNumbers=0
|
||||||
|
LabSize=60
|
||||||
|
|||||||
@@ -1,14 +1,10 @@
|
|||||||
EESchema Schematic File Version 2
|
EESchema Schematic File Version 2
|
||||||
|
LIBS:portapack_h1-rescue
|
||||||
LIBS:hackrf_expansion
|
LIBS:hackrf_expansion
|
||||||
LIBS:wolfson
|
|
||||||
LIBS:passive
|
LIBS:passive
|
||||||
LIBS:lcd_kingtech
|
|
||||||
LIBS:supply
|
LIBS:supply
|
||||||
LIBS:io_expander
|
|
||||||
LIBS:trs_jack
|
LIBS:trs_jack
|
||||||
LIBS:battery
|
LIBS:battery
|
||||||
LIBS:mosfet
|
|
||||||
LIBS:microphone
|
|
||||||
LIBS:sd
|
LIBS:sd
|
||||||
LIBS:ck
|
LIBS:ck
|
||||||
LIBS:altera
|
LIBS:altera
|
||||||
@@ -18,257 +14,239 @@ LIBS:header
|
|||||||
LIBS:hole
|
LIBS:hole
|
||||||
LIBS:sharebrained
|
LIBS:sharebrained
|
||||||
LIBS:fiducial
|
LIBS:fiducial
|
||||||
|
LIBS:eastrising
|
||||||
|
LIBS:on_semi
|
||||||
|
LIBS:asahi_kasei
|
||||||
|
LIBS:ti
|
||||||
|
LIBS:diode
|
||||||
LIBS:portapack_h1-cache
|
LIBS:portapack_h1-cache
|
||||||
EELAYER 25 0
|
EELAYER 25 0
|
||||||
EELAYER END
|
EELAYER END
|
||||||
$Descr A4 11693 8268
|
$Descr A4 11693 8268
|
||||||
encoding utf-8
|
encoding utf-8
|
||||||
Sheet 1 4
|
Sheet 1 5
|
||||||
Title "PortaPack H1"
|
Title "PortaPack H1"
|
||||||
Date "21 Aug 2015"
|
Date "2017-05-22"
|
||||||
Rev "20150821"
|
Rev "20170522"
|
||||||
Comp "ShareBrained Technology, Inc."
|
Comp "ShareBrained Technology, Inc."
|
||||||
Comment1 "Copyright © 2014, 2015 Jared Boone"
|
Comment1 "Copyright © 2014-2017 Jared Boone"
|
||||||
Comment2 "License: GNU General Public License, version 2"
|
Comment2 "License: GNU General Public License, version 2"
|
||||||
Comment3 ""
|
Comment3 ""
|
||||||
Comment4 ""
|
Comment4 ""
|
||||||
$EndDescr
|
$EndDescr
|
||||||
$Comp
|
$Comp
|
||||||
L HOLE1 H1
|
|
||||||
U 1 1 5369BBC4
|
|
||||||
P 9500 2000
|
|
||||||
F 0 "H1" H 9500 2150 60 0000 C CNN
|
|
||||||
F 1 "HOLE1" H 9500 1850 60 0000 C CNN
|
|
||||||
F 2 "hole:HOLE_3200UM_VIAS" H 9500 2000 60 0001 C CNN
|
|
||||||
F 3 "" H 9500 2000 60 0000 C CNN
|
|
||||||
1 9500 2000
|
|
||||||
1 0 0 -1
|
|
||||||
$EndComp
|
|
||||||
$Comp
|
|
||||||
L HOLE1 H2
|
L HOLE1 H2
|
||||||
U 1 1 5369BBD8
|
U 1 1 5369BBD8
|
||||||
P 9500 2500
|
P 9500 1900
|
||||||
F 0 "H2" H 9500 2650 60 0000 C CNN
|
F 0 "H2" H 9500 2050 60 0000 C CNN
|
||||||
F 1 "HOLE1" H 9500 2350 60 0000 C CNN
|
F 1 "HOLE1" H 9500 1750 60 0000 C CNN
|
||||||
F 2 "hole:HOLE_3200UM_VIAS" H 9500 2500 60 0001 C CNN
|
F 2 "hole:HOLE_3200UM_VIAS" H 9500 1900 60 0001 C CNN
|
||||||
F 3 "" H 9500 2500 60 0000 C CNN
|
F 3 "" H 9500 1900 60 0000 C CNN
|
||||||
1 9500 2500
|
1 9500 1900
|
||||||
1 0 0 -1
|
1 0 0 -1
|
||||||
$EndComp
|
$EndComp
|
||||||
$Comp
|
$Comp
|
||||||
L HOLE1 H3
|
L HOLE1 H3
|
||||||
U 1 1 5369BBEC
|
U 1 1 5369BBEC
|
||||||
P 9500 3000
|
P 9500 2400
|
||||||
F 0 "H3" H 9500 3150 60 0000 C CNN
|
F 0 "H3" H 9500 2550 60 0000 C CNN
|
||||||
F 1 "HOLE1" H 9500 2850 60 0000 C CNN
|
F 1 "HOLE1" H 9500 2250 60 0000 C CNN
|
||||||
F 2 "hole:HOLE_3200UM_VIAS" H 9500 3000 60 0001 C CNN
|
F 2 "hole:HOLE_3200UM_VIAS" H 9500 2400 60 0001 C CNN
|
||||||
F 3 "" H 9500 3000 60 0000 C CNN
|
F 3 "" H 9500 2400 60 0000 C CNN
|
||||||
1 9500 3000
|
1 9500 2400
|
||||||
1 0 0 -1
|
1 0 0 -1
|
||||||
$EndComp
|
$EndComp
|
||||||
$Comp
|
$Comp
|
||||||
L HOLE1 H4
|
L HOLE1 H4
|
||||||
U 1 1 5369BC00
|
U 1 1 5369BC00
|
||||||
P 9500 3500
|
P 9500 2900
|
||||||
F 0 "H4" H 9500 3650 60 0000 C CNN
|
F 0 "H4" H 9500 3050 60 0000 C CNN
|
||||||
F 1 "HOLE1" H 9500 3350 60 0000 C CNN
|
F 1 "HOLE1" H 9500 2750 60 0000 C CNN
|
||||||
F 2 "hole:HOLE_3200UM_VIAS" H 9500 3500 60 0001 C CNN
|
F 2 "hole:HOLE_3200UM_VIAS" H 9500 2900 60 0001 C CNN
|
||||||
F 3 "" H 9500 3500 60 0000 C CNN
|
F 3 "" H 9500 2900 60 0000 C CNN
|
||||||
1 9500 3500
|
1 9500 2900
|
||||||
1 0 0 -1
|
1 0 0 -1
|
||||||
$EndComp
|
$EndComp
|
||||||
$Comp
|
$Comp
|
||||||
L HOLE1 H5
|
L HOLE1 H5
|
||||||
U 1 1 5369BC14
|
U 1 1 5369BC14
|
||||||
P 9500 4000
|
P 9500 3400
|
||||||
F 0 "H5" H 9500 4150 60 0000 C CNN
|
F 0 "H5" H 9500 3550 60 0000 C CNN
|
||||||
F 1 "HOLE1" H 9500 3850 60 0000 C CNN
|
F 1 "HOLE1" H 9500 3250 60 0000 C CNN
|
||||||
F 2 "hole:HOLE_3200UM_VIAS" H 9500 4000 60 0001 C CNN
|
F 2 "hole:HOLE_3200UM_VIAS" H 9500 3400 60 0001 C CNN
|
||||||
F 3 "" H 9500 4000 60 0000 C CNN
|
F 3 "" H 9500 3400 60 0000 C CNN
|
||||||
1 9500 4000
|
1 9500 3400
|
||||||
1 0 0 -1
|
1 0 0 -1
|
||||||
$EndComp
|
$EndComp
|
||||||
$Sheet
|
$Sheet
|
||||||
S 2800 1900 900 3300
|
S 2800 1600 900 4700
|
||||||
U 53A8BFC3
|
U 53A8BFC3
|
||||||
F0 "audio" 50
|
F0 "audio" 50
|
||||||
F1 "audio.sch" 50
|
F1 "audio.sch" 50
|
||||||
F2 "I2S0_SCK" I R 3700 2300 60
|
F2 "SCL" I R 3700 2500 60
|
||||||
F3 "I2S0_TX_SDA" I R 3700 2500 60
|
F3 "SDA" B R 3700 2600 60
|
||||||
F4 "I2S0_MCLK" I R 3700 2200 60
|
F4 "PDN#" I R 3700 1700 60
|
||||||
F5 "I2S0_WS" I R 3700 2400 60
|
F5 "BICK" B R 3700 2000 60
|
||||||
F6 "SCL" I R 3700 2800 60
|
F6 "LRCK" B R 3700 2100 60
|
||||||
F7 "SDA" B R 3700 2900 60
|
F7 "SDTO" O R 3700 2300 60
|
||||||
F8 "I2S0_RX_SDA" O R 3700 2600 60
|
F8 "MCKI" I R 3700 1900 60
|
||||||
|
F9 "SDTI" I R 3700 2200 60
|
||||||
|
F10 "SVDD" I R 3700 6200 60
|
||||||
|
F11 "AVDD" I R 3700 6100 60
|
||||||
|
F12 "DVDD" I R 3700 6000 60
|
||||||
|
F13 "TVDD" I R 3700 5900 60
|
||||||
$EndSheet
|
$EndSheet
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
9800 2500 9700 2500
|
9800 1900 9700 1900
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
9800 3000 9700 3000
|
9800 2400 9700 2400
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
9800 3500 9700 3500
|
9800 2900 9700 2900
|
||||||
$Sheet
|
$Sheet
|
||||||
S 7600 1900 900 3300
|
S 7600 1600 900 4700
|
||||||
U 53A9129D
|
U 53A9129D
|
||||||
F0 "lcd_sw_sd" 50
|
F0 "lcd_sw_sd" 50
|
||||||
F1 "lcd_sw_sd.sch" 50
|
F1 "lcd_sw_sd.sch" 50
|
||||||
F2 "LCD_RS" I L 7600 2400 60
|
F2 "LCD_RS" I L 7600 2100 60
|
||||||
F3 "LCD_RD#" I L 7600 2500 60
|
F3 "LCD_RD#" I L 7600 2200 60
|
||||||
F4 "LCD_WR#" I L 7600 2600 60
|
F4 "LCD_WR#" I L 7600 2300 60
|
||||||
F5 "LCD_RESET#" I L 7600 2100 60
|
F5 "LCD_RESET#" I L 7600 1700 60
|
||||||
F6 "LCD_TE" O L 7600 3000 60
|
F6 "LCD_TE" O L 7600 2700 60
|
||||||
F7 "SW_SEL" O L 7600 4300 60
|
F7 "SW_SEL" O L 7600 4000 60
|
||||||
F8 "SW_ROT_A" O L 7600 4100 60
|
F8 "SW_ROT_A" O L 7600 3800 60
|
||||||
F9 "SW_ROT_B" O L 7600 4200 60
|
F9 "SW_ROT_B" O L 7600 3900 60
|
||||||
F10 "SW_D" O L 7600 3900 60
|
F10 "SW_D" O L 7600 3600 60
|
||||||
F11 "SW_R" O L 7600 3800 60
|
F11 "SW_R" O L 7600 3500 60
|
||||||
F12 "SW_U" O L 7600 3700 60
|
F12 "SW_U" O L 7600 3400 60
|
||||||
F13 "SW_L" O L 7600 4000 60
|
F13 "SW_L" O L 7600 3700 60
|
||||||
F14 "SD_DAT2" B L 7600 5000 60
|
F14 "SD_DAT2" B L 7600 4700 60
|
||||||
F15 "SD_DAT3" B L 7600 5100 60
|
F15 "SD_DAT3" B L 7600 4800 60
|
||||||
F16 "SD_CMD" B L 7600 4700 60
|
F16 "SD_CMD" B L 7600 4400 60
|
||||||
F17 "SD_CLK" I L 7600 4600 60
|
F17 "SD_CLK" I L 7600 4300 60
|
||||||
F18 "SD_DAT0" B L 7600 4800 60
|
F18 "SD_DAT0" B L 7600 4500 60
|
||||||
F19 "SD_DAT1" B L 7600 4900 60
|
F19 "SD_DAT1" B L 7600 4600 60
|
||||||
F20 "SD_CD" O L 7600 4500 60
|
F20 "SD_CD" O L 7600 4200 60
|
||||||
F21 "TP_R" B L 7600 3300 60
|
F21 "TP_R" B L 7600 3000 60
|
||||||
F22 "TP_D" B L 7600 3400 60
|
F22 "TP_D" B L 7600 3100 60
|
||||||
F23 "TP_L" B L 7600 3500 60
|
F23 "TP_L" B L 7600 3200 60
|
||||||
F24 "TP_U" B L 7600 3200 60
|
F24 "TP_U" B L 7600 2900 60
|
||||||
F25 "LCD_DB[15..0]" B L 7600 2700 60
|
F25 "LCD_DB[15..0]" B L 7600 2400 60
|
||||||
F26 "LCD_BACKLIGHT" I L 7600 2000 60
|
F26 "LCD_BACKLIGHT" I L 7600 1900 60
|
||||||
|
F27 "LCD_CS#" I L 7600 2000 60
|
||||||
|
F28 "LCD_VBL" I L 7600 6200 60
|
||||||
$EndSheet
|
$EndSheet
|
||||||
Wire Bus Line
|
Wire Bus Line
|
||||||
6600 2700 7600 2700
|
6600 2400 7600 2400
|
||||||
$Sheet
|
$Sheet
|
||||||
S 4700 1900 1900 3300
|
S 4700 1600 1900 3700
|
||||||
U 53A8C780
|
U 53A8C780
|
||||||
F0 "hackrf_if" 50
|
F0 "hackrf_if" 50
|
||||||
F1 "hackrf_if.sch" 50
|
F1 "hackrf_if.sch" 50
|
||||||
F2 "LCD_TE" I R 6600 3000 60
|
F2 "LCD_TE" I R 6600 2700 60
|
||||||
F3 "SW_R" I R 6600 3800 60
|
F3 "SW_R" I R 6600 3500 60
|
||||||
F4 "SW_ROT_B" I R 6600 4200 60
|
F4 "SW_ROT_B" I R 6600 3900 60
|
||||||
F5 "SW_ROT_A" I R 6600 4100 60
|
F5 "SW_ROT_A" I R 6600 3800 60
|
||||||
F6 "SW_D" I R 6600 3900 60
|
F6 "SW_D" I R 6600 3600 60
|
||||||
F7 "SW_SEL" I R 6600 4300 60
|
F7 "SW_SEL" I R 6600 4000 60
|
||||||
F8 "SW_U" I R 6600 3700 60
|
F8 "SW_U" I R 6600 3400 60
|
||||||
F9 "SW_L" I R 6600 4000 60
|
F9 "SW_L" I R 6600 3700 60
|
||||||
F10 "LCD_RESET#" O R 6600 2100 60
|
F10 "LCD_RESET#" O R 6600 1700 60
|
||||||
F11 "LCD_RS" O R 6600 2400 60
|
F11 "LCD_RS" O R 6600 2100 60
|
||||||
F12 "LCD_RD#" O R 6600 2500 60
|
F12 "LCD_RD#" O R 6600 2200 60
|
||||||
F13 "LCD_WR#" O R 6600 2600 60
|
F13 "LCD_WR#" O R 6600 2300 60
|
||||||
F14 "TP_U" B R 6600 3200 60
|
F14 "TP_U" B R 6600 2900 60
|
||||||
F15 "TP_L" B R 6600 3500 60
|
F15 "TP_L" B R 6600 3200 60
|
||||||
F16 "TP_D" B R 6600 3400 60
|
F16 "TP_D" B R 6600 3100 60
|
||||||
F17 "TP_R" B R 6600 3300 60
|
F17 "TP_R" B R 6600 3000 60
|
||||||
F18 "I2S0_TX_SDA" O L 4700 2500 60
|
F18 "I2S0_TX_SDA" O L 4700 2200 60
|
||||||
F19 "I2S0_WS" O L 4700 2400 60
|
F19 "I2S0_MCLK" O L 4700 1900 60
|
||||||
F20 "I2S0_MCLK" O L 4700 2200 60
|
F20 "SDA" B L 4700 2600 60
|
||||||
F21 "I2S0_SCK" O L 4700 2300 60
|
F21 "SCL" O L 4700 2500 60
|
||||||
F22 "SDA" B L 4700 2900 60
|
F22 "SD_CD" I R 6600 4200 60
|
||||||
F23 "SCL" O L 4700 2800 60
|
F23 "SD_DAT2" B R 6600 4700 60
|
||||||
F24 "SD_CD" I R 6600 4500 60
|
F24 "SD_DAT0" B R 6600 4500 60
|
||||||
F25 "SD_DAT2" B R 6600 5000 60
|
F25 "SD_CMD" B R 6600 4400 60
|
||||||
F26 "SD_DAT0" B R 6600 4800 60
|
F26 "SD_CLK" O R 6600 4300 60
|
||||||
F27 "SD_CMD" B R 6600 4700 60
|
F27 "SD_DAT3" B R 6600 4800 60
|
||||||
F28 "SD_CLK" O R 6600 4600 60
|
F28 "SD_DAT1" B R 6600 4600 60
|
||||||
F29 "SD_DAT3" B R 6600 5100 60
|
F29 "I2S0_RX_SDA" I L 4700 2300 60
|
||||||
F30 "SD_DAT1" B R 6600 4900 60
|
F30 "LCD_DB[15..0]" B R 6600 2400 60
|
||||||
F31 "I2S0_RX_SDA" I L 4700 2600 60
|
F31 "LCD_BACKLIGHT" O R 6600 1900 60
|
||||||
F32 "LCD_DB[15..0]" B R 6600 2700 60
|
F32 "LCD_CS#" O R 6600 2000 60
|
||||||
F33 "LCD_BACKLIGHT" O R 6600 2000 60
|
F33 "AUDIO_RESET#" O L 4700 1700 60
|
||||||
|
F34 "I2S0_WS" B L 4700 2100 60
|
||||||
|
F35 "I2S0_SCK" B L 4700 2000 60
|
||||||
|
F36 "VIN" I R 6600 5200 60
|
||||||
|
F37 "VBUS" O R 6600 5000 60
|
||||||
|
F38 "VBUSCTRL" I R 6600 5100 60
|
||||||
|
F39 "VBAT" I L 4700 5200 60
|
||||||
$EndSheet
|
$EndSheet
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 2000 7600 2000
|
6600 1900 7600 1900
|
||||||
|
Wire Wire Line
|
||||||
|
7600 1700 6600 1700
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 2100 6600 2100
|
7600 2100 6600 2100
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 2400 6600 2400
|
6600 2200 7600 2200
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 2500 7600 2500
|
7600 2300 6600 2300
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 2600 6600 2600
|
6600 2700 7600 2700
|
||||||
|
Wire Wire Line
|
||||||
|
7600 2900 6600 2900
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 3000 7600 3000
|
6600 3000 7600 3000
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 3200 6600 3200
|
7600 3100 6600 3100
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 3300 7600 3300
|
6600 3200 7600 3200
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 3400 6600 3400
|
6600 3400 7600 3400
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 3500 7600 3500
|
7600 3500 6600 3500
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 3700 7600 3700
|
6600 3600 7600 3600
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 3800 6600 3800
|
7600 3700 6600 3700
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 3900 7600 3900
|
6600 3800 7600 3800
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 4000 6600 4000
|
7600 3900 6600 3900
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 4100 7600 4100
|
6600 4000 7600 4000
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 4200 6600 4200
|
6600 4200 7600 4200
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 4300 7600 4300
|
6600 4300 7600 4300
|
||||||
|
Wire Wire Line
|
||||||
|
7600 4400 6600 4400
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 4500 7600 4500
|
6600 4500 7600 4500
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 4600 7600 4600
|
7600 4600 6600 4600
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 4700 6600 4700
|
6600 4700 7600 4700
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 4800 7600 4800
|
7600 4800 6600 4800
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 4900 6600 4900
|
3700 1900 4700 1900
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
6600 5000 7600 5000
|
4700 2000 3700 2000
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
7600 5100 6600 5100
|
3700 2100 4700 2100
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
3700 2200 4700 2200
|
4700 2200 3700 2200
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
4700 2300 3700 2300
|
3700 2300 4700 2300
|
||||||
Wire Wire Line
|
|
||||||
3700 2400 4700 2400
|
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
4700 2500 3700 2500
|
4700 2500 3700 2500
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
3700 2600 4700 2600
|
3700 2600 4700 2600
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
4700 2800 3700 2800
|
9800 1900 9800 3500
|
||||||
Wire Wire Line
|
Connection ~ 9800 2400
|
||||||
3700 2900 4700 2900
|
Connection ~ 9800 2900
|
||||||
Wire Wire Line
|
|
||||||
9700 2000 9800 2000
|
|
||||||
Wire Wire Line
|
|
||||||
9800 2000 9800 4100
|
|
||||||
Connection ~ 9800 2500
|
|
||||||
Connection ~ 9800 3000
|
|
||||||
Connection ~ 9800 3500
|
|
||||||
$Comp
|
|
||||||
L SHAREBRAINED LOGO1
|
|
||||||
U 1 1 53B1AE0D
|
|
||||||
P 6050 7000
|
|
||||||
F 0 "LOGO1" H 6050 7050 60 0000 C CNN
|
|
||||||
F 1 "SHAREBRAINED" H 6050 6950 60 0000 C CNN
|
|
||||||
F 2 "sharebrained:sharebrained_text_300" H 6050 7000 60 0001 C CNN
|
|
||||||
F 3 "" H 6050 7000 60 0000 C CNN
|
|
||||||
1 6050 7000
|
|
||||||
1 0 0 -1
|
|
||||||
$EndComp
|
|
||||||
$Comp
|
|
||||||
L PORTAPACK_H1 LOGO2
|
|
||||||
U 1 1 53B1B509
|
|
||||||
P 6050 7450
|
|
||||||
F 0 "LOGO2" H 6050 7500 60 0000 C CNN
|
|
||||||
F 1 "PORTAPACK_H1" H 6050 7400 60 0000 C CNN
|
|
||||||
F 2 "sharebrained:portapack_text_300" H 6050 7450 60 0001 C CNN
|
|
||||||
F 3 "" H 6050 7450 60 0000 C CNN
|
|
||||||
1 6050 7450
|
|
||||||
1 0 0 -1
|
|
||||||
$EndComp
|
|
||||||
$Comp
|
$Comp
|
||||||
L FIDUCIAL FID1
|
L FIDUCIAL FID1
|
||||||
U 1 1 53B309AC
|
U 1 1 53B309AC
|
||||||
@@ -316,15 +294,68 @@ $EndComp
|
|||||||
$Comp
|
$Comp
|
||||||
L GND #PWR01
|
L GND #PWR01
|
||||||
U 1 1 53B3303D
|
U 1 1 53B3303D
|
||||||
P 9800 4100
|
P 9800 3500
|
||||||
F 0 "#PWR01" H 9800 4100 30 0001 C CNN
|
F 0 "#PWR01" H 9800 3500 30 0001 C CNN
|
||||||
F 1 "GND" H 9800 4030 30 0001 C CNN
|
F 1 "GND" H 9800 3430 30 0001 C CNN
|
||||||
F 2 "" H 9800 4100 60 0000 C CNN
|
F 2 "" H 9800 3500 60 0000 C CNN
|
||||||
F 3 "" H 9800 4100 60 0000 C CNN
|
F 3 "" H 9800 3500 60 0000 C CNN
|
||||||
1 9800 4100
|
1 9800 3500
|
||||||
1 0 0 -1
|
1 0 0 -1
|
||||||
$EndComp
|
$EndComp
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
9700 4000 9800 4000
|
9700 3400 9800 3400
|
||||||
Connection ~ 9800 4000
|
Connection ~ 9800 3400
|
||||||
|
Wire Wire Line
|
||||||
|
6600 2000 7600 2000
|
||||||
|
Wire Wire Line
|
||||||
|
4700 1700 3700 1700
|
||||||
|
$Sheet
|
||||||
|
S 4700 5600 1900 700
|
||||||
|
U 58CFF3E3
|
||||||
|
F0 "power" 50
|
||||||
|
F1 "power.sch" 50
|
||||||
|
F2 "LCD_VBL" O R 6600 6200 60
|
||||||
|
F3 "AUDIO_SVDD" O L 4700 6200 60
|
||||||
|
F4 "AUDIO_AVDD" O L 4700 6100 60
|
||||||
|
F5 "AUDIO_DVDD" O L 4700 6000 60
|
||||||
|
F6 "AUDIO_TVDD" O L 4700 5900 60
|
||||||
|
F7 "VBUS" I R 6600 5700 60
|
||||||
|
F8 "VBUSCTRL" O R 6600 5800 60
|
||||||
|
F9 "VIN" O R 6600 5900 60
|
||||||
|
F10 "VBAT" O L 4700 5700 60
|
||||||
|
$EndSheet
|
||||||
|
Wire Wire Line
|
||||||
|
6600 6200 7600 6200
|
||||||
|
Wire Wire Line
|
||||||
|
3700 6200 4700 6200
|
||||||
|
Wire Wire Line
|
||||||
|
4700 6100 3700 6100
|
||||||
|
Wire Wire Line
|
||||||
|
3700 6000 4700 6000
|
||||||
|
Wire Wire Line
|
||||||
|
4700 5900 3700 5900
|
||||||
|
Wire Wire Line
|
||||||
|
4700 5700 4500 5700
|
||||||
|
Wire Wire Line
|
||||||
|
4500 5700 4500 5200
|
||||||
|
Wire Wire Line
|
||||||
|
4500 5200 4700 5200
|
||||||
|
Wire Wire Line
|
||||||
|
6600 5700 6800 5700
|
||||||
|
Wire Wire Line
|
||||||
|
6800 5700 6800 5000
|
||||||
|
Wire Wire Line
|
||||||
|
6800 5000 6600 5000
|
||||||
|
Wire Wire Line
|
||||||
|
6600 5100 6900 5100
|
||||||
|
Wire Wire Line
|
||||||
|
6900 5100 6900 5800
|
||||||
|
Wire Wire Line
|
||||||
|
6900 5800 6600 5800
|
||||||
|
Wire Wire Line
|
||||||
|
6600 5200 7000 5200
|
||||||
|
Wire Wire Line
|
||||||
|
7000 5200 7000 5900
|
||||||
|
Wire Wire Line
|
||||||
|
7000 5900 6600 5900
|
||||||
$EndSCHEMATC
|
$EndSCHEMATC
|
||||||
|
|||||||
@@ -0,0 +1,794 @@
|
|||||||
|
EESchema Schematic File Version 2
|
||||||
|
LIBS:portapack_h1-rescue
|
||||||
|
LIBS:hackrf_expansion
|
||||||
|
LIBS:passive
|
||||||
|
LIBS:supply
|
||||||
|
LIBS:trs_jack
|
||||||
|
LIBS:battery
|
||||||
|
LIBS:sd
|
||||||
|
LIBS:ck
|
||||||
|
LIBS:altera
|
||||||
|
LIBS:regulator
|
||||||
|
LIBS:tp
|
||||||
|
LIBS:header
|
||||||
|
LIBS:hole
|
||||||
|
LIBS:sharebrained
|
||||||
|
LIBS:fiducial
|
||||||
|
LIBS:eastrising
|
||||||
|
LIBS:on_semi
|
||||||
|
LIBS:asahi_kasei
|
||||||
|
LIBS:ti
|
||||||
|
LIBS:diode
|
||||||
|
LIBS:portapack_h1-cache
|
||||||
|
EELAYER 25 0
|
||||||
|
EELAYER END
|
||||||
|
$Descr A4 11693 8268
|
||||||
|
encoding utf-8
|
||||||
|
Sheet 5 5
|
||||||
|
Title "PortaPack H1"
|
||||||
|
Date "2017-05-22"
|
||||||
|
Rev "20170522"
|
||||||
|
Comp "ShareBrained Technology, Inc."
|
||||||
|
Comment1 "Copyright © 2014-2017 Jared Boone"
|
||||||
|
Comment2 "License: GNU General Public License, version 2"
|
||||||
|
Comment3 ""
|
||||||
|
Comment4 ""
|
||||||
|
$EndDescr
|
||||||
|
Text HLabel 10450 4550 0 60 Output ~ 0
|
||||||
|
LCD_VBL
|
||||||
|
$Comp
|
||||||
|
L +3.3V #PWR077
|
||||||
|
U 1 1 58CFF694
|
||||||
|
P 10550 4450
|
||||||
|
F 0 "#PWR077" H 10550 4410 30 0001 C CNN
|
||||||
|
F 1 "+3.3V" H 10550 4560 30 0000 C CNN
|
||||||
|
F 2 "" H 10550 4450 60 0000 C CNN
|
||||||
|
F 3 "" H 10550 4450 60 0000 C CNN
|
||||||
|
1 10550 4450
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Text HLabel 6300 2200 2 60 Output ~ 0
|
||||||
|
AUDIO_SVDD
|
||||||
|
Text HLabel 10450 4750 0 60 Output ~ 0
|
||||||
|
AUDIO_AVDD
|
||||||
|
Text HLabel 10450 5200 0 60 Output ~ 0
|
||||||
|
AUDIO_DVDD
|
||||||
|
Text HLabel 10450 4850 0 60 Output ~ 0
|
||||||
|
AUDIO_TVDD
|
||||||
|
$Comp
|
||||||
|
L +1.8V #PWR078
|
||||||
|
U 1 1 58CFF6A8
|
||||||
|
P 10550 5100
|
||||||
|
F 0 "#PWR078" H 10550 5240 20 0001 C CNN
|
||||||
|
F 1 "+1.8V" H 10550 5210 30 0000 C CNN
|
||||||
|
F 2 "" H 10550 5100 60 0000 C CNN
|
||||||
|
F 3 "" H 10550 5100 60 0000 C CNN
|
||||||
|
1 10550 5100
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L REGULATOR_SOT23_5 U2
|
||||||
|
U 1 1 58CFF91A
|
||||||
|
P 8400 2900
|
||||||
|
F 0 "U2" H 8400 3150 50 0000 C CNN
|
||||||
|
F 1 "TCR2EF18,LM(CT" H 8000 2650 50 0000 C CNN
|
||||||
|
F 2 "ipc_sot:IPC_SOT23-5P95_275X135L40X40N" H 8400 2900 60 0001 C CNN
|
||||||
|
F 3 "http://toshiba.semicon-storage.com/ap-en/product/linear/power-supply/detail.TCR2EF18.html" H 8400 2900 60 0001 C CNN
|
||||||
|
F 4 "Toshiba" H 8400 2900 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "TCR2EF18,LM(CT" H 8400 2900 60 0001 C CNN "Part"
|
||||||
|
1 8400 2900
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C38
|
||||||
|
U 1 1 58CFF923
|
||||||
|
P 7500 3100
|
||||||
|
F 0 "C38" H 7550 3200 50 0000 L CNN
|
||||||
|
F 1 "10U" H 7550 3000 50 0000 L CNN
|
||||||
|
F 2 "ipc_capc:IPC_CAPC2012X135L45N" H 7500 3100 60 0001 C CNN
|
||||||
|
F 3 "" H 7500 3100 60 0000 C CNN
|
||||||
|
F 4 "Murata" H 7500 3100 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "GRM21BR61A106KE19" H 7500 3100 60 0001 C CNN "Part"
|
||||||
|
1 7500 3100
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C40
|
||||||
|
U 1 1 58CFF92C
|
||||||
|
P 9300 3100
|
||||||
|
F 0 "C40" H 9350 3200 50 0000 L CNN
|
||||||
|
F 1 "10U" H 9350 3000 50 0000 L CNN
|
||||||
|
F 2 "ipc_capc:IPC_CAPC2012X135L45N" H 9300 3100 60 0001 C CNN
|
||||||
|
F 3 "" H 9300 3100 60 0000 C CNN
|
||||||
|
F 4 "Murata" H 9300 3100 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "GRM21BR61A106KE19" H 9300 3100 60 0001 C CNN "Part"
|
||||||
|
1 9300 3100
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR079
|
||||||
|
U 1 1 58CFF933
|
||||||
|
P 8400 3300
|
||||||
|
F 0 "#PWR079" H 8400 3300 30 0001 C CNN
|
||||||
|
F 1 "GND" H 8400 3230 30 0001 C CNN
|
||||||
|
F 2 "" H 8400 3300 60 0000 C CNN
|
||||||
|
F 3 "" H 8400 3300 60 0000 C CNN
|
||||||
|
1 8400 3300
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR080
|
||||||
|
U 1 1 58CFF939
|
||||||
|
P 7500 3400
|
||||||
|
F 0 "#PWR080" H 7500 3400 30 0001 C CNN
|
||||||
|
F 1 "GND" H 7500 3330 30 0001 C CNN
|
||||||
|
F 2 "" H 7500 3400 60 0000 C CNN
|
||||||
|
F 3 "" H 7500 3400 60 0000 C CNN
|
||||||
|
1 7500 3400
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR081
|
||||||
|
U 1 1 58CFF93F
|
||||||
|
P 9300 3400
|
||||||
|
F 0 "#PWR081" H 9300 3400 30 0001 C CNN
|
||||||
|
F 1 "GND" H 9300 3330 30 0001 C CNN
|
||||||
|
F 2 "" H 9300 3400 60 0000 C CNN
|
||||||
|
F 3 "" H 9300 3400 60 0000 C CNN
|
||||||
|
1 9300 3400
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C39
|
||||||
|
U 1 1 58CFF945
|
||||||
|
P 8900 3300
|
||||||
|
F 0 "C39" H 8950 3400 50 0000 L CNN
|
||||||
|
F 1 "R" H 8950 3200 50 0001 L CNN
|
||||||
|
F 2 "ipc_capc:IPC_CAPC1608X90L35N" H 9100 3300 60 0001 C CNN
|
||||||
|
F 3 "" H 8900 3300 60 0000 C CNN
|
||||||
|
F 4 "DNP" H 9000 3200 50 0000 C CNN "DNP"
|
||||||
|
1 8900 3300
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR082
|
||||||
|
U 1 1 58CFF94C
|
||||||
|
P 8900 3600
|
||||||
|
F 0 "#PWR082" H 8900 3600 30 0001 C CNN
|
||||||
|
F 1 "GND" H 8900 3530 30 0001 C CNN
|
||||||
|
F 2 "" H 8900 3600 60 0000 C CNN
|
||||||
|
F 3 "" H 8900 3600 60 0000 C CNN
|
||||||
|
1 8900 3600
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L +1.8V #PWR083
|
||||||
|
U 1 1 58CFF952
|
||||||
|
P 9300 2700
|
||||||
|
F 0 "#PWR083" H 9300 2840 20 0001 C CNN
|
||||||
|
F 1 "+1.8V" H 9300 2810 30 0000 C CNN
|
||||||
|
F 2 "" H 9300 2700 60 0000 C CNN
|
||||||
|
F 3 "" H 9300 2700 60 0000 C CNN
|
||||||
|
1 9300 2700
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L +3.3V #PWR084
|
||||||
|
U 1 1 58CFF958
|
||||||
|
P 7500 2700
|
||||||
|
F 0 "#PWR084" H 7500 2660 30 0001 C CNN
|
||||||
|
F 1 "+3.3V" H 7500 2810 30 0000 C CNN
|
||||||
|
F 2 "" H 7500 2700 60 0000 C CNN
|
||||||
|
F 3 "" H 7500 2700 60 0000 C CNN
|
||||||
|
1 7500 2700
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Text HLabel 2800 2500 0 60 Input ~ 0
|
||||||
|
VBUS
|
||||||
|
Text HLabel 2800 3200 0 60 Output ~ 0
|
||||||
|
VBUSCTRL
|
||||||
|
Text HLabel 6300 2400 2 60 Output ~ 0
|
||||||
|
VIN
|
||||||
|
$Comp
|
||||||
|
L BATTERY BT1
|
||||||
|
U 1 1 58D008D0
|
||||||
|
P 9700 1350
|
||||||
|
F 0 "BT1" V 9600 1200 50 0000 C CNN
|
||||||
|
F 1 "BATTERY" V 9800 1150 50 0001 C CNN
|
||||||
|
F 2 "bat_coin:MPD_BU2032SM-BT-G" H 9700 1350 60 0001 C CNN
|
||||||
|
F 3 "http://www.memoryprotectiondevices.com/datasheets/BU2032SM-BT-GTR-datasheet.pdf" H 9700 1350 60 0001 C CNN
|
||||||
|
F 4 "MPD" H 9700 1350 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "BU2032SM-BT-GTR" H 9700 1350 60 0001 C CNN "Part"
|
||||||
|
1 9700 1350
|
||||||
|
0 1 1 0
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR085
|
||||||
|
U 1 1 58D008D7
|
||||||
|
P 9700 1650
|
||||||
|
F 0 "#PWR085" H 9700 1650 30 0001 C CNN
|
||||||
|
F 1 "GND" H 9700 1580 30 0001 C CNN
|
||||||
|
F 2 "" H 9700 1650 60 0000 C CNN
|
||||||
|
F 3 "" H 9700 1650 60 0000 C CNN
|
||||||
|
1 9700 1650
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C41
|
||||||
|
U 1 1 58D008E2
|
||||||
|
P 10200 1350
|
||||||
|
F 0 "C41" H 10250 1450 50 0000 L CNN
|
||||||
|
F 1 "10U" H 10250 1250 50 0001 L CNN
|
||||||
|
F 2 "ipc_capc:IPC_CAPC2012X135L45N" H 10200 1350 60 0001 C CNN
|
||||||
|
F 3 "" H 10200 1350 60 0000 C CNN
|
||||||
|
F 4 "Murata" H 10200 1350 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "GRM21BR61A106KE19" H 10200 1350 60 0001 C CNN "Part"
|
||||||
|
F 6 "DNP" H 10300 1250 50 0000 C CNN "DNP"
|
||||||
|
1 10200 1350
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR086
|
||||||
|
U 1 1 58D008E9
|
||||||
|
P 10200 1650
|
||||||
|
F 0 "#PWR086" H 10200 1650 30 0001 C CNN
|
||||||
|
F 1 "GND" H 10200 1580 30 0001 C CNN
|
||||||
|
F 2 "" H 10200 1650 60 0000 C CNN
|
||||||
|
F 3 "" H 10200 1650 60 0000 C CNN
|
||||||
|
1 10200 1650
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Text HLabel 10300 1050 2 60 Output ~ 0
|
||||||
|
VBAT
|
||||||
|
$Comp
|
||||||
|
L BQ24075 U6
|
||||||
|
U 1 1 58F1AA75
|
||||||
|
P 4500 3100
|
||||||
|
F 0 "U6" H 4500 3150 60 0000 C CNN
|
||||||
|
F 1 "BQ24075RGT" H 4500 3050 60 0001 C CNN
|
||||||
|
F 2 "ipc_qfn:IPC_QFN17P50_300X300X100L40X25T160N" H 4600 3350 60 0001 C CNN
|
||||||
|
F 3 "http://www.ti.com/lit/ds/symlink/bq24075.pdf" H 4600 3350 60 0001 C CNN
|
||||||
|
F 4 "Texas Instruments" H 4500 3100 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "BQ24075RGT" H 4500 3100 60 0001 C CNN "Part"
|
||||||
|
F 6 "DNP" H 4500 3050 50 0000 C CNN "DNP"
|
||||||
|
1 4500 3100
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C1
|
||||||
|
U 1 1 58F1AC44
|
||||||
|
P 3400 2800
|
||||||
|
F 0 "C1" H 3450 2900 50 0000 L CNN
|
||||||
|
F 1 "1U" H 3450 2700 50 0001 L CNN
|
||||||
|
F 2 "ipc_capc:IPC_CAPC2012X135L45N" H 3400 2800 60 0001 C CNN
|
||||||
|
F 3 "" H 3400 2800 60 0000 C CNN
|
||||||
|
F 4 "Murata" H 3400 2800 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" H 3500 2700 50 0000 C CNN "DNP"
|
||||||
|
F 6 ">26V" H 3250 2700 50 0000 C CNN "WVDC"
|
||||||
|
1 3400 2800
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR087
|
||||||
|
U 1 1 58F1AC96
|
||||||
|
P 3700 3000
|
||||||
|
F 0 "#PWR087" H 3700 3000 30 0001 C CNN
|
||||||
|
F 1 "GND" H 3700 2930 30 0001 C CNN
|
||||||
|
F 2 "" H 3700 3000 60 0000 C CNN
|
||||||
|
F 3 "" H 3700 3000 60 0000 C CNN
|
||||||
|
1 3700 3000
|
||||||
|
0 1 1 0
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR088
|
||||||
|
U 1 1 58F1ACB9
|
||||||
|
P 3700 3100
|
||||||
|
F 0 "#PWR088" H 3700 3100 30 0001 C CNN
|
||||||
|
F 1 "GND" H 3700 3030 30 0001 C CNN
|
||||||
|
F 2 "" H 3700 3100 60 0000 C CNN
|
||||||
|
F 3 "" H 3700 3100 60 0000 C CNN
|
||||||
|
1 3700 3100
|
||||||
|
0 1 1 0
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR089
|
||||||
|
U 1 1 58F1AD43
|
||||||
|
P 3400 3100
|
||||||
|
F 0 "#PWR089" H 3400 3100 30 0001 C CNN
|
||||||
|
F 1 "GND" H 3400 3030 30 0001 C CNN
|
||||||
|
F 2 "" H 3400 3100 60 0000 C CNN
|
||||||
|
F 3 "" H 3400 3100 60 0000 C CNN
|
||||||
|
1 3400 3100
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C16
|
||||||
|
U 1 1 58F1AE50
|
||||||
|
P 5600 2700
|
||||||
|
F 0 "C16" H 5650 2800 50 0000 L CNN
|
||||||
|
F 1 "4U7" H 5650 2600 50 0001 L CNN
|
||||||
|
F 2 "ipc_capc:IPC_CAPC2012X135L45N" H 5600 2700 60 0001 C CNN
|
||||||
|
F 3 "" H 5600 2700 60 0000 C CNN
|
||||||
|
F 4 "Murata" H 5600 2700 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" H 5700 2600 50 0000 C CNN "DNP"
|
||||||
|
1 5600 2700
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR090
|
||||||
|
U 1 1 58F1AEB9
|
||||||
|
P 5600 3000
|
||||||
|
F 0 "#PWR090" H 5600 3000 30 0001 C CNN
|
||||||
|
F 1 "GND" H 5600 2930 30 0001 C CNN
|
||||||
|
F 2 "" H 5600 3000 60 0000 C CNN
|
||||||
|
F 3 "" H 5600 3000 60 0000 C CNN
|
||||||
|
1 5600 3000
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C15
|
||||||
|
U 1 1 58F1B1AB
|
||||||
|
P 3500 4000
|
||||||
|
F 0 "C15" H 3550 4100 50 0000 L CNN
|
||||||
|
F 1 "4U7" H 3550 3900 50 0001 L CNN
|
||||||
|
F 2 "ipc_capc:IPC_CAPC2012X135L45N" H 3500 4000 60 0001 C CNN
|
||||||
|
F 3 "" H 3500 4000 60 0000 C CNN
|
||||||
|
F 4 "Murata" H 3500 4000 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" H 3600 3900 50 0000 C CNN "DNP"
|
||||||
|
1 3500 4000
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR091
|
||||||
|
U 1 1 58F1B4E6
|
||||||
|
P 3500 4300
|
||||||
|
F 0 "#PWR091" H 3500 4300 30 0001 C CNN
|
||||||
|
F 1 "GND" H 3500 4230 30 0001 C CNN
|
||||||
|
F 2 "" H 3500 4300 60 0000 C CNN
|
||||||
|
F 3 "" H 3500 4300 60 0000 C CNN
|
||||||
|
1 3500 4300
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
10450 4550 10550 4550
|
||||||
|
Wire Wire Line
|
||||||
|
10550 4450 10550 4850
|
||||||
|
Wire Wire Line
|
||||||
|
10550 4750 10450 4750
|
||||||
|
Connection ~ 10550 4550
|
||||||
|
Wire Wire Line
|
||||||
|
10550 4850 10450 4850
|
||||||
|
Connection ~ 10550 4750
|
||||||
|
Wire Wire Line
|
||||||
|
10450 5200 10550 5200
|
||||||
|
Wire Wire Line
|
||||||
|
10550 5200 10550 5100
|
||||||
|
Connection ~ 7900 2800
|
||||||
|
Wire Wire Line
|
||||||
|
7900 3000 7900 2800
|
||||||
|
Wire Wire Line
|
||||||
|
8000 3000 7900 3000
|
||||||
|
Connection ~ 7500 2800
|
||||||
|
Wire Wire Line
|
||||||
|
7500 2700 7500 2900
|
||||||
|
Wire Wire Line
|
||||||
|
7500 2800 8000 2800
|
||||||
|
Connection ~ 9300 2800
|
||||||
|
Wire Wire Line
|
||||||
|
8900 3500 8900 3600
|
||||||
|
Wire Wire Line
|
||||||
|
8900 3000 8900 3100
|
||||||
|
Wire Wire Line
|
||||||
|
8800 3000 8900 3000
|
||||||
|
Wire Wire Line
|
||||||
|
8400 3200 8400 3300
|
||||||
|
Wire Wire Line
|
||||||
|
9300 3300 9300 3400
|
||||||
|
Wire Wire Line
|
||||||
|
9300 2700 9300 2900
|
||||||
|
Wire Wire Line
|
||||||
|
8800 2800 9300 2800
|
||||||
|
Wire Wire Line
|
||||||
|
7500 3300 7500 3400
|
||||||
|
Wire Wire Line
|
||||||
|
9700 1550 9700 1650
|
||||||
|
Wire Wire Line
|
||||||
|
9700 1050 9700 1150
|
||||||
|
Wire Wire Line
|
||||||
|
10200 1150 10200 1050
|
||||||
|
Wire Wire Line
|
||||||
|
10200 1550 10200 1650
|
||||||
|
Wire Wire Line
|
||||||
|
9700 1050 10300 1050
|
||||||
|
Connection ~ 10200 1050
|
||||||
|
Wire Wire Line
|
||||||
|
2800 2500 3800 2500
|
||||||
|
Wire Wire Line
|
||||||
|
3800 3000 3700 3000
|
||||||
|
Wire Wire Line
|
||||||
|
3800 3100 3700 3100
|
||||||
|
Wire Wire Line
|
||||||
|
3400 3100 3400 3000
|
||||||
|
Wire Wire Line
|
||||||
|
3400 2600 3400 2500
|
||||||
|
Connection ~ 3400 2500
|
||||||
|
Wire Wire Line
|
||||||
|
5200 2400 6300 2400
|
||||||
|
Wire Wire Line
|
||||||
|
5300 2500 5200 2500
|
||||||
|
Wire Wire Line
|
||||||
|
5300 800 5300 2500
|
||||||
|
Connection ~ 5300 2400
|
||||||
|
Wire Wire Line
|
||||||
|
5600 2500 5600 2400
|
||||||
|
Connection ~ 5600 2400
|
||||||
|
Wire Wire Line
|
||||||
|
5600 2900 5600 3000
|
||||||
|
Wire Wire Line
|
||||||
|
2900 3700 3800 3700
|
||||||
|
Wire Wire Line
|
||||||
|
3500 3700 3500 3800
|
||||||
|
Wire Wire Line
|
||||||
|
3800 3600 3700 3600
|
||||||
|
Wire Wire Line
|
||||||
|
3700 3600 3700 3700
|
||||||
|
Connection ~ 3700 3700
|
||||||
|
Wire Wire Line
|
||||||
|
3500 4300 3500 4200
|
||||||
|
$Comp
|
||||||
|
L R R1
|
||||||
|
U 1 1 58F1CB6B
|
||||||
|
P 4200 4550
|
||||||
|
F 0 "R1" V 4280 4550 50 0000 C CNN
|
||||||
|
F 1 "R" V 4200 4550 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 4200 4550 60 0001 C CNN
|
||||||
|
F 3 "" H 4200 4550 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 4200 4550 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 4200 4550 50 0000 C CNN "DNP"
|
||||||
|
1 4200 4550
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R4
|
||||||
|
U 1 1 58F1CBFA
|
||||||
|
P 4500 4550
|
||||||
|
F 0 "R4" V 4580 4550 50 0000 C CNN
|
||||||
|
F 1 "1K91" V 4500 4550 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 4500 4550 60 0001 C CNN
|
||||||
|
F 3 "" H 4500 4550 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 4500 4550 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 4500 4550 50 0000 C CNN "DNP"
|
||||||
|
1 4500 4550
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R6
|
||||||
|
U 1 1 58F1CC38
|
||||||
|
P 4800 4550
|
||||||
|
F 0 "R6" V 4880 4550 50 0000 C CNN
|
||||||
|
F 1 "1K8" V 4800 4550 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 4800 4550 60 0001 C CNN
|
||||||
|
F 3 "" H 4800 4550 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 4800 4550 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 4800 4550 50 0000 C CNN "DNP"
|
||||||
|
1 4800 4550
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR092
|
||||||
|
U 1 1 58F1CC76
|
||||||
|
P 4800 4900
|
||||||
|
F 0 "#PWR092" H 4800 4900 30 0001 C CNN
|
||||||
|
F 1 "GND" H 4800 4830 30 0001 C CNN
|
||||||
|
F 2 "" H 4800 4900 60 0000 C CNN
|
||||||
|
F 3 "" H 4800 4900 60 0000 C CNN
|
||||||
|
1 4800 4900
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR093
|
||||||
|
U 1 1 58F1CCA8
|
||||||
|
P 4500 4900
|
||||||
|
F 0 "#PWR093" H 4500 4900 30 0001 C CNN
|
||||||
|
F 1 "GND" H 4500 4830 30 0001 C CNN
|
||||||
|
F 2 "" H 4500 4900 60 0000 C CNN
|
||||||
|
F 3 "" H 4500 4900 60 0000 C CNN
|
||||||
|
1 4500 4900
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR094
|
||||||
|
U 1 1 58F1CCDA
|
||||||
|
P 4200 4900
|
||||||
|
F 0 "#PWR094" H 4200 4900 30 0001 C CNN
|
||||||
|
F 1 "GND" H 4200 4830 30 0001 C CNN
|
||||||
|
F 2 "" H 4200 4900 60 0000 C CNN
|
||||||
|
F 3 "" H 4200 4900 60 0000 C CNN
|
||||||
|
1 4200 4900
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
4200 4300 4200 4200
|
||||||
|
Wire Wire Line
|
||||||
|
4500 4300 4500 4200
|
||||||
|
Wire Wire Line
|
||||||
|
4800 4300 4800 4200
|
||||||
|
Wire Wire Line
|
||||||
|
4800 4900 4800 4800
|
||||||
|
Wire Wire Line
|
||||||
|
4500 4900 4500 4800
|
||||||
|
Wire Wire Line
|
||||||
|
4200 4900 4200 4800
|
||||||
|
$Comp
|
||||||
|
L R R3
|
||||||
|
U 1 1 58F1D0EB
|
||||||
|
P 4300 1150
|
||||||
|
F 0 "R3" V 4380 1150 50 0000 C CNN
|
||||||
|
F 1 "1K5" V 4300 1150 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 4300 1150 60 0001 C CNN
|
||||||
|
F 3 "" H 4300 1150 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 4300 1150 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 4300 1150 50 0000 C CNN "DNP"
|
||||||
|
1 4300 1150
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R5
|
||||||
|
U 1 1 58F1D207
|
||||||
|
P 4700 1150
|
||||||
|
F 0 "R5" V 4780 1150 50 0000 C CNN
|
||||||
|
F 1 "1K5" V 4700 1150 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 4700 1150 60 0001 C CNN
|
||||||
|
F 3 "" H 4700 1150 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 4700 1150 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 4700 1150 50 0000 C CNN "DNP"
|
||||||
|
1 4700 1150
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
4300 800 5300 800
|
||||||
|
Wire Wire Line
|
||||||
|
4700 800 4700 900
|
||||||
|
Wire Wire Line
|
||||||
|
4300 800 4300 900
|
||||||
|
Connection ~ 4700 800
|
||||||
|
Wire Wire Line
|
||||||
|
6300 2200 6100 2200
|
||||||
|
$Comp
|
||||||
|
L HEADER_1X2 J4
|
||||||
|
U 1 1 58F1DD77
|
||||||
|
P 2600 3750
|
||||||
|
F 0 "J4" H 2600 3950 60 0000 C CNN
|
||||||
|
F 1 "HEADER_1X2" H 2600 3550 60 0001 C CNN
|
||||||
|
F 2 "jst:JST_S2B-PH-SM4-TB" H 2600 3550 60 0001 C CNN
|
||||||
|
F 3 "http://www.jst-mfg.com/product/pdf/eng/ePH.pdf" H 2600 3550 60 0001 C CNN
|
||||||
|
F 4 "JST" H 2600 3750 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "S2B-PH-SM4-TB" H 2600 3750 60 0001 C CNN "Part"
|
||||||
|
F 6 "DNP" H 2600 3750 50 0000 C CNN "DNP"
|
||||||
|
1 2600 3750
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R8
|
||||||
|
U 1 1 58F1E372
|
||||||
|
P 3450 3400
|
||||||
|
F 0 "R8" V 3530 3400 50 0000 C CNN
|
||||||
|
F 1 "10K" V 3450 3400 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 3450 3400 60 0001 C CNN
|
||||||
|
F 3 "" H 3450 3400 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 3450 3400 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 3450 3400 50 0000 C CNN "DNP"
|
||||||
|
1 3450 3400
|
||||||
|
0 1 -1 0
|
||||||
|
$EndComp
|
||||||
|
Connection ~ 3500 3700
|
||||||
|
$Comp
|
||||||
|
L GND #PWR095
|
||||||
|
U 1 1 58F1E667
|
||||||
|
P 3000 3900
|
||||||
|
F 0 "#PWR095" H 3000 3900 30 0001 C CNN
|
||||||
|
F 1 "GND" H 3000 3830 30 0001 C CNN
|
||||||
|
F 2 "" H 3000 3900 60 0000 C CNN
|
||||||
|
F 3 "" H 3000 3900 60 0000 C CNN
|
||||||
|
1 3000 3900
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
2900 3800 3000 3800
|
||||||
|
Wire Wire Line
|
||||||
|
3000 3800 3000 3900
|
||||||
|
Wire Wire Line
|
||||||
|
3800 3400 3700 3400
|
||||||
|
$Comp
|
||||||
|
L GND #PWR096
|
||||||
|
U 1 1 58F1EA88
|
||||||
|
P 3100 3400
|
||||||
|
F 0 "#PWR096" H 3100 3400 30 0001 C CNN
|
||||||
|
F 1 "GND" H 3100 3330 30 0001 C CNN
|
||||||
|
F 2 "" H 3100 3400 60 0000 C CNN
|
||||||
|
F 3 "" H 3100 3400 60 0000 C CNN
|
||||||
|
1 3100 3400
|
||||||
|
0 1 1 0
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
3100 3400 3200 3400
|
||||||
|
Wire Wire Line
|
||||||
|
6100 2200 6100 2400
|
||||||
|
Connection ~ 6100 2400
|
||||||
|
$Comp
|
||||||
|
L R R7
|
||||||
|
U 1 1 58F1F0EF
|
||||||
|
P 3000 2850
|
||||||
|
F 0 "R7" V 3080 2850 50 0000 C CNN
|
||||||
|
F 1 "0R" V 3000 2850 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 3000 2850 60 0001 C CNN
|
||||||
|
F 3 "" H 3000 2850 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 3000 2850 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 3000 2850 50 0000 C CNN "DNP"
|
||||||
|
1 3000 2850
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
2800 3200 3000 3200
|
||||||
|
Wire Wire Line
|
||||||
|
3000 3200 3000 3100
|
||||||
|
Wire Wire Line
|
||||||
|
3000 2600 3000 2500
|
||||||
|
Connection ~ 3000 2500
|
||||||
|
$Comp
|
||||||
|
L R R9
|
||||||
|
U 1 1 58F443CF
|
||||||
|
P 5300 4050
|
||||||
|
F 0 "R9" V 5380 4050 50 0000 C CNN
|
||||||
|
F 1 "10K" V 5300 4050 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 5300 4050 60 0001 C CNN
|
||||||
|
F 3 "" H 5300 4050 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 5300 4050 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 5300 4050 50 0000 C CNN "DNP"
|
||||||
|
1 5300 4050
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR097
|
||||||
|
U 1 1 58F4443F
|
||||||
|
P 5300 4400
|
||||||
|
F 0 "#PWR097" H 5300 4400 30 0001 C CNN
|
||||||
|
F 1 "GND" H 5300 4330 30 0001 C CNN
|
||||||
|
F 2 "" H 5300 4400 60 0000 C CNN
|
||||||
|
F 3 "" H 5300 4400 60 0000 C CNN
|
||||||
|
1 5300 4400
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
5300 4400 5300 4300
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3700 5300 3700
|
||||||
|
Wire Wire Line
|
||||||
|
5300 3700 5300 3800
|
||||||
|
$Comp
|
||||||
|
L R R10
|
||||||
|
U 1 1 58F44562
|
||||||
|
P 5500 4050
|
||||||
|
F 0 "R10" V 5580 4050 50 0000 C CNN
|
||||||
|
F 1 "10K" V 5500 4050 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 5500 4050 60 0001 C CNN
|
||||||
|
F 3 "" H 5500 4050 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 5500 4050 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 5500 4050 50 0000 C CNN "DNP"
|
||||||
|
1 5500 4050
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L GND #PWR098
|
||||||
|
U 1 1 58F445B7
|
||||||
|
P 5500 4400
|
||||||
|
F 0 "#PWR098" H 5500 4400 30 0001 C CNN
|
||||||
|
F 1 "GND" H 5500 4330 30 0001 C CNN
|
||||||
|
F 2 "" H 5500 4400 60 0000 C CNN
|
||||||
|
F 3 "" H 5500 4400 60 0000 C CNN
|
||||||
|
1 5500 4400
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3600 5500 3600
|
||||||
|
Wire Wire Line
|
||||||
|
5500 3600 5500 3800
|
||||||
|
Wire Wire Line
|
||||||
|
5500 4300 5500 4400
|
||||||
|
$Comp
|
||||||
|
L R R14
|
||||||
|
U 1 1 58F44903
|
||||||
|
P 5900 3750
|
||||||
|
F 0 "R14" V 5980 3750 50 0000 C CNN
|
||||||
|
F 1 "10K" V 5900 3750 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 5900 3750 60 0001 C CNN
|
||||||
|
F 3 "" H 5900 3750 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 5900 3750 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 5900 3750 50 0000 C CNN "DNP"
|
||||||
|
1 5900 3750
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R13
|
||||||
|
U 1 1 58F4495E
|
||||||
|
P 5900 2950
|
||||||
|
F 0 "R13" V 5980 2950 50 0000 C CNN
|
||||||
|
F 1 "10K" V 5900 2950 50 0001 C CNN
|
||||||
|
F 2 "ipc_resc:IPC_RESC1005X40L25N" H 5900 2950 60 0001 C CNN
|
||||||
|
F 3 "" H 5900 2950 60 0000 C CNN
|
||||||
|
F 4 "Yageo" V 5900 2950 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "DNP" V 5900 2950 50 0000 C CNN "DNP"
|
||||||
|
1 5900 2950
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3300 5900 3300
|
||||||
|
Wire Wire Line
|
||||||
|
5900 3300 5900 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3400 5900 3400
|
||||||
|
Wire Wire Line
|
||||||
|
5900 3400 5900 3500
|
||||||
|
$Comp
|
||||||
|
L GND #PWR099
|
||||||
|
U 1 1 58F44AF6
|
||||||
|
P 5900 4100
|
||||||
|
F 0 "#PWR099" H 5900 4100 30 0001 C CNN
|
||||||
|
F 1 "GND" H 5900 4030 30 0001 C CNN
|
||||||
|
F 2 "" H 5900 4100 60 0000 C CNN
|
||||||
|
F 3 "" H 5900 4100 60 0000 C CNN
|
||||||
|
1 5900 4100
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
5900 4000 5900 4100
|
||||||
|
Wire Wire Line
|
||||||
|
5900 2700 5900 2400
|
||||||
|
Connection ~ 5900 2400
|
||||||
|
$Comp
|
||||||
|
L LED D1
|
||||||
|
U 1 1 58F5B932
|
||||||
|
P 4300 1700
|
||||||
|
AR Path="/58F5B932" Ref="D1" Part="1"
|
||||||
|
AR Path="/58CFF3E3/58F5B932" Ref="D1" Part="1"
|
||||||
|
F 0 "D1" H 4300 1800 50 0000 C CNN
|
||||||
|
F 1 "LED 0603 green" H 4300 1600 50 0001 C CNN
|
||||||
|
F 2 "ipc_ledc:IPC_LEDC1608X90L40N" H 4300 1700 60 0001 C CNN
|
||||||
|
F 3 "" H 4300 1700 60 0000 C CNN
|
||||||
|
F 4 "Kingbright" H 4300 1700 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "APT1608SGC" H 4300 1700 60 0001 C CNN "Part"
|
||||||
|
F 6 "DNP" H 4300 1600 50 0000 C CNN "DNP"
|
||||||
|
1 4300 1700
|
||||||
|
0 -1 1 0
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L LED D2
|
||||||
|
U 1 1 58F5BA0B
|
||||||
|
P 4700 1700
|
||||||
|
AR Path="/58F5BA0B" Ref="D2" Part="1"
|
||||||
|
AR Path="/58CFF3E3/58F5BA0B" Ref="D2" Part="1"
|
||||||
|
F 0 "D2" H 4700 1800 50 0000 C CNN
|
||||||
|
F 1 "LED 0603 yellow" H 4700 1600 50 0001 C CNN
|
||||||
|
F 2 "ipc_ledc:IPC_LEDC1608X90L40N" H 4700 1700 60 0001 C CNN
|
||||||
|
F 3 "" H 4700 1700 60 0000 C CNN
|
||||||
|
F 4 "Kingbright" H 4700 1700 60 0001 C CNN "Mfr"
|
||||||
|
F 5 "APT1608SYCK" H 4700 1700 60 0001 C CNN "Part"
|
||||||
|
F 6 "DNP" H 4700 1600 50 0000 C CNN "DNP"
|
||||||
|
1 4700 1700
|
||||||
|
0 -1 1 0
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
4300 1500 4300 1400
|
||||||
|
Wire Wire Line
|
||||||
|
4700 1500 4700 1400
|
||||||
|
Wire Wire Line
|
||||||
|
4700 2000 4700 1900
|
||||||
|
Wire Wire Line
|
||||||
|
4300 2000 4300 1900
|
||||||
|
Text Label 3100 3700 0 60 ~ 0
|
||||||
|
BBAT
|
||||||
|
Text Notes 1200 4700 0 60 ~ 0
|
||||||
|
TODO:\n\nV(ISET) indicates charge current. Monitor w/ADC.\nR3,R5=100K, remove LEDs, if monitoring status w/GPIOs.
|
||||||
|
Text Notes 5100 5200 0 60 ~ 0
|
||||||
|
ISET (fast charge current) R6=1K8 (~~500mA).\n\nR4 is required, otherwise no charging.\nILIM (input limit) R4=1K8 (~~850mA).\n\nTMR=open for default timer values.
|
||||||
|
$EndSCHEMATC
|
||||||
Reference in New Issue
Block a user