/*********************************************************************//** * @brief Verify buffer * @param[in] none * @return None **********************************************************************/ void Buffer_Verify(void) { uint8_t i; #if (SPI_DATABIT_SIZE==8) uint8_t *src_addr = (uint8_t *) &Tx_Buf[0]; uint8_t *dest_addr = (uint8_t *) &Rx_Buf[0]; for ( i = 0; i < SPI_DATABIT_SIZE; i++ ) { if ( *src_addr++ != *dest_addr++ ) { /* Call Error Loop */ _DBG_("Verify error"); Error_Loop(); } } #else uint16_t *src_addr = (uint16_t *) &Tx_Buf[0]; uint16_t *dest_addr = (uint16_t *) &Rx_Buf[0]; for ( i = 0; i < SPI_DATABIT_SIZE/2; i++ ) { if ( *src_addr++ != *dest_addr++ ) { /* Call Error Loop */ _DBG_("Verify error"); Error_Loop(); } } #endif }
/*********************************************************************//** * @brief Verify buffer * @param[in] none * @return None **********************************************************************/ void Buffer_Verify(void) { uint8_t i; uint32_t *src_addr = (uint32_t *)DMA_SRC; uint32_t *dest_addr = (uint32_t *)DMA_DST; for ( i = 0; i < DMA_SIZE/4; i++ ) { if ( *src_addr++ != *dest_addr++ ) { /* Call Error Loop */ Error_Loop(); } } }
/*********************************************************************//** * @brief Verify buffer * @param[in] none * @return None **********************************************************************/ void Buffer_Verify(void) { uint8_t i; uint8_t *pSTx = (uint8_t *) &Slave_Tx_Buf[0]; uint8_t *pMRx = (uint8_t *) &Master_Rx_Buf[0]; for ( i = 0; i < BUFFER_SIZE; i++ ) { if (*pMRx++ != *pSTx++) { /* Call Error Loop */ Error_Loop(); } } }
/*********************************************************************//** * @brief Verify buffer * @param[in] none * @return None **********************************************************************/ void Buffer_Verify(void) { uint32_t i; uint8_t *src_addr = (uint8_t *)dma_src; uint8_t *dest_addr = (uint8_t *)dma_dst; for ( i = 0; i < DMA_DATA_SIZE; i++ ) { if ( *src_addr++ != *dest_addr++ ) { /* Call Error Loop */ _DBG_("Verify error"); Error_Loop(); } } }
/*********************************************************************//** * @brief Verify buffer * @param[in] none * @return None **********************************************************************/ void Buffer_Verify(void) { uint8_t i; uint8_t *src_addr = (uint8_t *) &Tx_Buf[0]; uint8_t *dest_addr = (uint8_t *) &Rx_Buf[0]; for ( i = 0; i < BUFFER_SIZE; i++ ) { if ( *src_addr++ != *dest_addr++ ) { _DBG_("Verify error"); /* Call Error Loop */ Error_Loop(); } } }
/*********************************************************************//** * @brief c_entry: Main program body * @param[in] None * @return int **********************************************************************/ int c_entry(void) { uint8_t tmpchar[2] = {0, 0}; __IO FlagStatus exitflag; PINSEL_CFG_Type PinCfg; I2C_M_SETUP_Type transferCfg; uint8_t SC16IS_RegStat; #if (USEDI2CDEV == 0) /* Disable I2C0 interrupt */ NVIC_DisableIRQ(I2C0_IRQn); /* preemption = 1, sub-priority = 1 */ NVIC_SetPriority(I2C0_IRQn, ((0x01<<3)|0x01)); #elif (USEDI2CDEV == 2) /* Disable I2C2 interrupt */ NVIC_DisableIRQ(I2C2_IRQn); /* preemption = 1, sub-priority = 1 */ NVIC_SetPriority(I2C2_IRQn, ((0x01<<3)|0x01)); #endif /* Initialize debug via UART0 * – 115200bps * – 8 data bit * – No parity * – 1 stop bit * – No flow control */ debug_frmwrk_init(); // print welcome screen print_menu(); /* * Init I2C pin connect */ PinCfg.OpenDrain = 0; PinCfg.Pinmode = 0; #if (USEDI2CDEV == 0) PinCfg.Funcnum = 1; PinCfg.Pinnum = 27; PinCfg.Portnum = 0; PINSEL_ConfigPin(&PinCfg); PinCfg.Pinnum = 28; PINSEL_ConfigPin(&PinCfg); #elif (USEDI2CDEV == 2) PinCfg.Funcnum = 2; PinCfg.Pinnum = 10; PinCfg.Portnum = 0; PINSEL_ConfigPin(&PinCfg); PinCfg.Pinnum = 11; PINSEL_ConfigPin(&PinCfg); #endif /* I2C block ------------------------------------------------------------------- */ // Initialize I2C peripheral I2C_Init(I2CDEV, 100000); /* Enable I2C1 operation */ I2C_Cmd(I2CDEV, ENABLE); // test complete = RESET; transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = NULL; transferCfg.tx_length = 0; transferCfg.rx_data = &SC16IS_RegStat; transferCfg.rx_length = 1; transferCfg.retransmissions_max = 2; I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_INTERRUPT); while (complete == RESET); /* Configure SC16IS750 ---------------------------------------------------------- */ /* First, send some command to reset SC16IS740 chip via I2C bus interface */ complete = RESET; transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = (uint8_t *)iocon_cfg; transferCfg.tx_length = sizeof(iocon_cfg); transferCfg.rx_data = NULL; transferCfg.rx_length = 0; transferCfg.retransmissions_max = 2; I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_INTERRUPT); while (complete == RESET); complete = RESET; transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = (uint8_t *)iodir_cfg; transferCfg.tx_length = sizeof(iodir_cfg); transferCfg.rx_data = NULL; transferCfg.rx_length = 0; transferCfg.retransmissions_max = 2; I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_INTERRUPT); while (complete == RESET); complete = RESET; transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = (uint8_t *)iostate_cfg_0; transferCfg.tx_length = sizeof(iostate_cfg_0); transferCfg.rx_data = NULL; transferCfg.rx_length = 0; transferCfg.retransmissions_max = 2; I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_INTERRUPT); while (complete == RESET); /* Validate value of SC16IS750 register ------------------------------------------ */ /* This section will dump out value of register that set through I2C bus */ complete = RESET; transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = NULL; //(uint8_t *)iocon_cfg; transferCfg.tx_length = 0;//1; transferCfg.rx_data = &SC16IS_RegStat; transferCfg.rx_length = 1; transferCfg.retransmissions_max = 2; I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_INTERRUPT); while (complete == RESET); complete = RESET; transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = (uint8_t *)iodir_cfg; transferCfg.tx_length = 1; transferCfg.rx_data = &SC16IS_RegStat; transferCfg.rx_length = 1; transferCfg.retransmissions_max = 2; I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_INTERRUPT); while (complete == RESET); complete = RESET; transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = (uint8_t *)iostate_cfg_0; transferCfg.tx_length = 1; transferCfg.rx_data = &SC16IS_RegStat; transferCfg.rx_length = 1; transferCfg.retransmissions_max = 2; I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_INTERRUPT); while (complete == RESET); // Reset exit flag exitflag = RESET; /* Read some data from the buffer */ while (exitflag == RESET){ while((tmpchar[0] = _DG) == 0); if (tmpchar[0] == 27){ /* ESC key, set exit flag */ _DBG_(menu2); exitflag = SET; } else if (tmpchar[0] == 'r'){ print_menu(); } else{ if (tmpchar[0] == '1'){ // LEDs are ON now... transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = (uint8_t *)iostate_cfg_0; transferCfg.tx_length = sizeof(iostate_cfg_0); transferCfg.rx_data = NULL; transferCfg.rx_length = 0; transferCfg.retransmissions_max = 2; if (I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_POLLING) \ == ERROR){ Error_Loop(transferCfg.status); } } else if (tmpchar[0] == '2') { // LEDs are OFF now... transferCfg.sl_addr7bit = SLVADDR; transferCfg.tx_data = (uint8_t *)iostate_cfg_1; transferCfg.tx_length = sizeof(iostate_cfg_1); transferCfg.rx_data = NULL; transferCfg.rx_length = 0; transferCfg.retransmissions_max = 2; if (I2C_MasterTransferData(I2CDEV, &transferCfg, I2C_TRANSFER_POLLING) \ == ERROR){ Error_Loop(transferCfg.status); } } /* Then Echo it back */ _DBG_(tmpchar); } } // wait for current transmission complete - THR must be empty while (UART_CheckBusy(LPC_UART0) == SET); // DeInitialize UART0 peripheral UART_DeInit(LPC_UART0); I2C_DeInit(I2CDEV); /* Loop forever */ while(1); return 1; }