mirror of
https://github.com/eried/portapack-mayhem.git
synced 2024-12-24 23:09:26 -05:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
c2a9ed7d9b
@ -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
|
||||||
|
100
firmware/common/backlight.cpp
Normal file
100
firmware/common/backlight.cpp
Normal file
@ -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 */
|
120
firmware/common/backlight.hpp
Normal file
120
firmware/common/backlight.hpp
Normal file
@ -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;
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
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;
|
||||||
|
25
hardware/portapack_h1/fp-lib-table
Normal file
25
hardware/portapack_h1/fp-lib-table
Normal file
@ -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 ""))
|
||||||
|
)
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
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
|
||||||
|
794
hardware/portapack_h1/power.sch
Normal file
794
hardware/portapack_h1/power.sch
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user