static void prvSetupHardware( void ) { SystemCoreClockUpdate(); // enable clock to RAM1 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<26); // init GPIO GPIOInit(); // init I2C I2CInit(I2CMASTER); //init ADC ADCInit(ADC_CLK); // init SPI ports SSP_IOConfig( 0 ); SSP_Init( 0 ); SSP_IOConfig( 1 ); SSP_Init( 1 ); // init keyboard CAP_KEY_Init(); // init MOSFET pin LPC_IOCON->PIO1_25=0x90; GPIOSetDir(PIN_MOSFET,1); }
/*---------------------------------------------------------------------------- MAIN function *----------------------------------------------------------------------------*/ int main (void) { unsigned long status, current_tick, last_tick, i, j; unsigned char data[5]; unsigned char temp; // SysTick_Config(SystemCoreClock/1000); /* Generate IRQ each 1 ms */ init_mfrc500(); SER_init(); /* UART#1 Initialization */ SSP_IOConfig(); SSP_Init(); // init_eint(); printf("Welcome\r\n"); if(PcdReset() != MI_OK); { printf("PcdReset Fail\r\n"); while(1); } while(1); }
static void prvSetupHardware( void ) { SystemCoreClockUpdate(); // enable clock to RAM1 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<26); // init GPIO GPIOInit(); // init I2C I2CInit(I2CMASTER); //init ADC ADCInit(ADC_CLK); // init SPI ports SSP_IOConfig( 0 ); SSP_Init( 0 ); SSP_IOConfig( 1 ); SSP_Init( 1 ); if (GPIOGetPinValue( PIN_CAL_DET )) { m_eAppCFGStatus = appANTENNA_CAL; // init CLKOUT pin LPC_IOCON->PIO0_1=1; // enable CLKOUT LPC_SYSCON->CLKOUTSEL=3; // select main clock LPC_SYSCON->CLKOUTUEN=1; // update clock source LPC_SYSCON->CLKOUTDIV=2; // divide by 2 } else { m_eAppCFGStatus = appNFC_KEYB_TEMP_SWITCH; // init keyboard CAP_KEY_Init(); // init MOSFET pin LPC_IOCON->PIO1_25=0x90; GPIOSetDir(PIN_MOSFET,1); } }
void glcd_init(void) { #if defined(GLCD_CONTROLLER_PCD8544) /* * Set up SPI (SSP) * Note: Max allowed SPI clock is 4 MHz from datasheet. */ /* Select SSP/SPI port */ SSP_IOConfig( CONTROLLER_SPI_PORT_NUMBER ); /* Initialise SSP/SPI port */ SSP_Init( CONTROLLER_SPI_PORT_NUMBER ); /* Above functions take care of SPI pins */ /* Set SS, DC and RST pins to output */ CONTROLLER_SS_PORT->DIR |= (1 << CONTROLLER_SS_PIN); CONTROLLER_DC_PORT->DIR |= (1 << CONTROLLER_DC_PIN); CONTROLLER_RST_PORT->DIR |= (1 << CONTROLLER_RST_PIN); /* Deselect LCD */ //GLCD_DESELECT(); /* Reset the display */ glcd_reset(); /* Get into the EXTENDED mode! */ glcd_command(PCD8544_FUNCTION_SET | PCD8544_EXTENDED_INSTRUCTION); /* LCD bias select (4 is optimal?) */ glcd_command(PCD8544_SET_BIAS | 0x2); /* Set VOP */ glcd_command(PCD8544_SET_VOP | 50); // Experimentally determined /* Back to standard instructions */ glcd_command(PCD8544_FUNCTION_SET); /* Normal mode */ glcd_command(PCD8544_DISPLAY_CONTROL | PCD8544_DISPLAY_NORMAL); glcd_select_screen(glcd_buffer,&glcd_bbox); glcd_clear(); #else /* GLCD_CONTROLLER_PCD8544 */ #error "Controller not supported by LPC111x" #endif }
void glcd_init(void) { #if defined(GLCD_CONTROLLER_PCD8544) // Set up SPI (SSP) // Note: Max allowed SPI clock is 4 MHz from datasheet. // select SSP/SPI port SSP_IOConfig( PCD8544_SPI_PORT_NUMBER ); // initialise SSP/SPI port SSP_Init( PCD8544_SPI_PORT_NUMBER ); // above functions take care of SPI pins // set SS, DC and RST pins to output PCD8544_SS_PORT->DIR |= (1 << PCD8544_SS_PIN); PCD8544_DC_PORT->DIR |= (1 << PCD8544_DC_PIN); PCD8544_RST_PORT->DIR |= (1 << PCD8544_RST_PIN); // deselect LCD //GLCD_DESELECT(); // reset the display glcd_reset(); // get into the EXTENDED mode! glcd_command(PCD8544_FUNCTION_SET | PCD8544_EXTENDED_INSTRUCTION); // LCD bias select (4 is optimal?) glcd_command(PCD8544_SET_BIAS | 0x2); // set VOP glcd_command(PCD8544_SET_VOP | 50); // Experimentally determined // back to standard instructions glcd_command(PCD8544_FUNCTION_SET); // normal mode glcd_command(PCD8544_DISPLAY_CONTROL | PCD8544_DISPLAY_NORMAL); glcd_select_screen((uint8_t *)&glcd_buffer,&glcd_bbox); glcd_clear(); #else /* GLCD_CONTROLLER_PCD8544 */ #error Controller not supported. #endif }
SPI::SPI(PinName mosi, PinName miso, PinName sclk, const char *name) : _mosi(-1), _miso(-1), _sclk(-1), _bits(8), _hz(1000000), _mode(0), _delay(0) { _name = (char *) name; // ハードSPIのみをサポート(ピン固定) if (mosi == MOSI && (miso == MISO || miso == NC) && sclk == SCKL) { _spi = LPC_SSP0; SSP_IOConfig(SSP_NUM); /* initialize SSP port, share pins with SPI1 on port2(p2.0-3). */ SSP_Init(SSP_NUM); // 8bits, mode=0; format(_bits, _mode); // 1MHz frequency(_hz); // バッファの初期化(例題に習った) for (int i = 0; i < SSP_BUFSIZE; i++) { src_addr[i] = 0; dst_addr[i] = 0; } } }
/****************************************************************************** ** Main Function main() ******************************************************************************/ int main (void) { uint32_t i; #if SSP_DEBUG int8_t temp[2]; #endif SystemCoreClockUpdate(); #if SSP_DEBUG UARTInit(115200); #endif SSP_IOConfig( SSP_NUM ); SSP_Init( SSP_NUM ); for ( i = 0; i < SSP_BUFSIZE; i++ ) { src_addr[i] = (uint8_t)i; dest_addr[i] = 0; } #if TX_RX_ONLY /* For the inter-board communication, one board is set as master transmit, the other is set to slave receive. */ #if SSP_SLAVE /* Slave receive */ SSP_Receive( SSP_NUM, (uint8_t *)dest_addr, SSP_BUFSIZE ); for ( i = 0; i < SSP_BUFSIZE; i++ ) { if ( src_addr[i] != dest_addr[i] ) { while ( 1 ); /* Verification failure, fatal error */ } } #else /* Master transmit */ SSP_Send( SSP_NUM, (uint8_t *)src_addr, SSP_BUFSIZE); #endif #else /* TX_RX_ONLY=0, it's either an internal loopback test within SSP peripheral or communicate with a serial EEPROM. */ #if LOOPBACK_MODE SSP_LoopbackTest( SSP_NUM ); #else SSP_SEEPROMTest( SSP_NUM ); /* If SW CLK is used as SSP clock, change the setting before serial EEPROM test, restore after the test. */ #ifdef __SWD_DISABLED LPC_IOCON->SWCLK_PIO0_10 &= ~0x07; /* Restore SWD CLK */ #endif #endif /* endif NOT LOOPBACK_MODE */ #if LOOPBACK_MODE for ( i = 0; i < SSP_BUFSIZE; i++ ) #else /* for EEPROM test, verifying, ignore the difference in the first four bytes which are used as command and parameters. */ for ( i = SFLASH_INDEX; i < SSP_BUFSIZE; i++ ) #endif { if ( src_addr[i] != dest_addr[i] ) { #if SSP_DEBUG temp[0] = (dest_addr[i] & 0xF0) >> 4; if ( (temp[0] >= 0) && (temp[0] <= 9) ) { temp[0] += 0x30; } else { temp[0] -= 0x0A; temp[0] += 0x41; } temp[1] = dest_addr[i] & 0x0F; if ( (temp[1] >= 0) && (temp[1] <= 9) ) { temp[1] += 0x30; } else { temp[1] -= 0x0A; temp[1] += 0x41; } UARTSend((uint8_t *)&temp[0], 2); UARTSend((uint8_t *)"\r\n", 2); #endif while( 1 ); /* Verification failed */ } }
void glcd_init(void) { #if defined(GLCD_CONTROLLER_PCD8544) /* * Set up SPI (SSP) * Note: Max allowed SPI clock is 4 MHz from datasheet. */ /* Select SSP/SPI port */ SSP_IOConfig( CONTROLLER_SPI_PORT_NUMBER ); /* Initialise SSP/SPI port */ SSP_Init( CONTROLLER_SPI_PORT_NUMBER ); /* Above functions take care of SPI pins */ /* Set SS, DC and RST pins to output */ CONTROLLER_SS_PORT->DIR |= (1 << CONTROLLER_SS_PIN); CONTROLLER_DC_PORT->DIR |= (1 << CONTROLLER_DC_PIN); CONTROLLER_RST_PORT->DIR |= (1 << CONTROLLER_RST_PIN); /* Deselect LCD */ GLCD_DESELECT(); /* Reset the display */ glcd_reset(); /* Get into the EXTENDED mode! */ glcd_command(PCD8544_FUNCTION_SET | PCD8544_EXTENDED_INSTRUCTION); /* LCD bias select (4 is optimal?) */ glcd_command(PCD8544_SET_BIAS | 0x2); /* Set VOP */ glcd_command(PCD8544_SET_VOP | 50); // Experimentally determined /* Back to standard instructions */ glcd_command(PCD8544_FUNCTION_SET); /* Normal mode */ glcd_command(PCD8544_DISPLAY_CONTROL | PCD8544_DISPLAY_NORMAL); glcd_select_screen(glcd_buffer,&glcd_bbox); glcd_clear(); #elif defined(GLCD_CONTROLLER_NT75451) /* Parallel interface controller used on NGX BlueBoards */ /* Set 4x control lines pins as output */ LPC_GPIO->DIR[CONTROLLER_LCD_EN_PORT] |= (1U<<CONTROLLER_LCD_EN_PIN); LPC_GPIO->DIR[CONTROLLER_LCD_RW_PORT] |= (1U<<CONTROLLER_LCD_RW_PIN); LPC_GPIO->DIR[CONTROLLER_LCD_RS_PORT] |= (1U<<CONTROLLER_LCD_RS_PIN); LPC_GPIO->DIR[CONTROLLER_LCD_CS_PORT] |= (1U<<CONTROLLER_LCD_CS_PIN); /* Don't worry about setting default RS/RW/CS/EN, they get set during use */ #ifdef CONTROLLER_LCD_DATA_PORT /* Set data pins as output */ LPC_GPIO->DIR[CONTROLLER_LCD_D0_PORT] |= GLCD_PARALLEL_MASK; #else #error "Support of parallel data pins on different ports not supported." #endif /* Initialise sequence - code by NGX Technologies */ glcd_command(0xE2); /* S/W RESWT */ glcd_command(0xA0); /* ADC select */ glcd_command(0xC8); /* SHL Normal */ glcd_command(0xA3); /* LCD bias */ glcd_command(0x2F); /* Power control */ glcd_command(0x22); /* reg resistor select */ glcd_command(0x40); /* Initial display line 40 */ glcd_command(0xA4); /* Normal display */ glcd_command(0xA6); /* Reverce display a7 */ glcd_command(0x81); /* Ref vg select mode */ glcd_command(0x3f); /* Ref vg reg select */ glcd_command(0xB0); /* Set page address */ glcd_command(0x10); /* Set coloumn addr MSB */ glcd_command(0x00); /* Set coloumn addr LSB */ glcd_command(0xAF); /* Display ON */ /* Select default screen buffer */ glcd_select_screen(glcd_buffer,&glcd_bbox); /* Clear the screen buffer */ glcd_clear(); #else /* GLCD_CONTROLLER_PCD8544 */ #error "Controller not supported by LPC111x" #endif }
/*---------------------------------------------------------------------------- MAIN function *----------------------------------------------------------------------------*/ int main (void) { unsigned char status = MI_NOTAGERR; unsigned long current_tick, last_tick, i, j; unsigned char data[5]; unsigned char temp; // SysTick_Config(SystemCoreClock/1000); /* Generate IRQ each 1 ms */ // init_mfrc500(); SER_init(); /* UART#1 Initialization */ SSP_IOConfig(); SSP_Init(); // init_eint(); #ifdef DEBUG_UART printf("Welcome\r\n"); #endif init_mfrc500(); //while(1) //{ // for(i=0; i<5; i++) // data[i] = ReadE2RC(0x00+i); // printf("Addr 0x00 content 0x%x, ", data[0]); //#ifdef DEBUG_UART // for(i=1; i<4; i++) // printf("0x%x, ", data[i]); //#endif // printf("0x%x\r\n", data[4]); // DelayMs(2000); //} compcd_antenna(); PcdConfigISOType(); while(1) { COM_Recv(); //M1Identify(); if (cRecvOk == 1) { cRecvOk = 0; switch (cCommand) { case ReadCdSrl: M1Identify(); break; case ReadCdDat: M1Read(); break; case WritCdDat: M1Write(); break; case InitCdPrs: M1Initval(); break; case ReadCdPrs: M1ReadVal(); break; case IncrCdPrs: M1Increment(); break; case DecrCdPrs: M1Decrement(); break; case TranCdPrs: M1Transfer(); break; case HaltCdIns: M1Halt(); break; case SetBound: // SetBaud(); break; } } PcdIdentify(); printf("-------------------------^.^-------------------------------------\r\n"); } }
int main (void) { SystemCoreClockUpdate (); GPIOInit (); while (GPIOGetValue (BTN_PORT, BTN_PIN) == 0) ; POWER_ON; SSP_IOConfig (SSP_NUM); /* initialize SSP port, share pins with SPI1 on port2(p2.0-3). */ SSP_Init (SSP_NUM); UARTInit (115200); LED1_ON; TIMInit (0, 2 * SystemCoreClock); TIMInit (1, SystemCoreClock); TIMInit16 (1, SystemCoreClock); TIMInit16 (0, SystemCoreClock); enable_timer16 (0); // Initialize SYstick SysTick_Config ( SYSTICK_DELAY); MSP5701_init (); SST25_init (); //LED1_BLINK; // TODO: insert code here NVIC_ClearPendingIRQ (EINT0_IRQn); NVIC_ClearPendingIRQ (EINT1_IRQn); NVIC_EnableIRQ (EINT0_IRQn); NVIC_EnableIRQ (EINT1_IRQn); clearAllEvents(); while (1) { if (checkEvent(BtnPressed)) { // Start measuring. //GPIOSetValue(LED1_PORT, LED1_PIN, ~GPIOGetValue(LED1_PORT,LED1_PIN)&0x1); clearEvent(BtnPressed); if (measure == 1) { measure = 0; live = 0; /* Save data info */ storage_save_data_info (&actual_record); meas_pointer = 0; stop_systick (); } else { measure = 1; meas_pointer = 0; storage_init (&actual_record); start_systick (); } clearEvent(BtnPressed); } if (checkEvent(PowerOff)) { // Turn off device. storage_save_data_info (&actual_record); meas_pointer = 0; measure = 0; LED1_OFF; LED2_OFF; UARTSend ((uint8_t*) "sleep\r\n", 7); POWER_OFF ; while (1) ; clearEvent(PowerOff); } if (checkEvent(UART_data)) { clearEvent(UART_data); uint8_t command = get_uart_char (); switch (command) { case 'e': stop_systick (); SST25_erase (0, SIZE_FULL); break; case 'r': measure = 0; /* Save data info */ if (actual_record.rec_index != -1) { storage_save_data_info (&actual_record); } meas_pointer = 0; stop_systick (); send_data (); break; case 'l': sleep = 0; measure = 1; live = 1; start_systick (); break; case 'n': live = 0; measure = 1; storage_init (&actual_record); start_systick (); sleep = 1; break; case 's': live = 0; sleep = 1; measure = 0; /* Save data info */ storage_save_data_info (&actual_record); meas_pointer = 0; stop_systick (); break; default: break; } } if (TimeTick & measure) { TimeTick = 0; /* Do stuff */ MSP5701_measure_press (&press); if (live == 0) { memcpy ((uint8_t*) (meas_buffer + meas_pointer), &press, sizeof(press)); meas_pointer += sizeof(press); if (meas_pointer >= SAMPLE_BUFFER_LENGTH - 1) { /* Store samples in external memory */ uint32_t length_written = storage_save_data ( &actual_record, meas_buffer, SAMPLE_BUFFER_LENGTH); meas_pointer = 0; if (length_written != SAMPLE_BUFFER_LENGTH) { /* Run out of memory - stop measuring */ measure = 0; meas_pointer = 0; storage_save_data_info (&actual_record); /* Turn off device */ POWER_OFF ; } } } else { /*Transmit live*/ UARTSend ((uint8_t*) &press, 4); UARTSend ((uint8_t*) "\r\n", 2); } } if (sleep == 1) { __WFI (); } } return 0; }