Пример #1
0
/*********************************************************************//**
 * @brief 		Configure Pin corresponding to specified parameters passed
 * 				in the PinCfg
 * @param[in]	PinCfg	Pointer to a PINSEL_CFG_Type structure
 *                    that contains the configuration information for the
 *                    specified pin.
 * @return 		None
 **********************************************************************/
void PINSEL_ConfigPin(PINSEL_CFG_Type *PinCfg)
{
	PINSEL_SetPinFunc(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->Funcnum);
	PINSEL_SetResistorMode(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->Pinmode);
	PINSEL_SetOpenDrainMode(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->OpenDrain);
}
Пример #2
0
/*********************************************************************//**
 * @brief       c_entry: Main program body
 * @param[in]   None
 * @return      int
 **********************************************************************/
int c_entry(void)
{
    I2C_M_SETUP_Type transferMCfg;
    uint32_t tempp;
    uint8_t *pdat;

    /* Initialize debug via UART0
     * – 115200bps
     * – 8 data bit
     * – No parity
     * – 1 stop bit
     * – No flow control
     */
    debug_frmwrk_init();

    print_menu();


    /* I2C block ------------------------------------------------------------------- */

    /*
     * Init I2C pin connect
     */
#if ((I2CDEV_M == 0))
    PINSEL_ConfigPin (5, 2, 5);
    PINSEL_ConfigPin (5, 3, 5);
#elif ((I2CDEV_M == 1))
    PINSEL_ConfigPin (0, 19, 3);
    PINSEL_ConfigPin (0, 20, 3);
    PINSEL_SetOpenDrainMode(0, 19, ENABLE);
    PINSEL_SetOpenDrainMode(0, 20, ENABLE);
    PINSEL_SetPinMode(0, 19, PINSEL_BASICMODE_PLAINOUT);
    PINSEL_SetPinMode(0, 20, PINSEL_BASICMODE_PLAINOUT);
#elif ((I2CDEV_M == 2)&& (_CURR_USING_OEM_BRD != LPC4088_OEM_BOARD))
    PINSEL_ConfigPin (0, 10, 2);
    PINSEL_ConfigPin (0, 11, 2);
    PINSEL_SetOpenDrainMode(0, 10, ENABLE);
    PINSEL_SetOpenDrainMode(0, 11, ENABLE);
    PINSEL_SetPinMode(0, 10, PINSEL_BASICMODE_PLAINOUT);
    PINSEL_SetPinMode(0, 11, PINSEL_BASICMODE_PLAINOUT);
#else
    #error "Please choose the correct peripheral."
#endif

    // Initialize Slave I2C peripheral
    I2C_Init((en_I2C_unitId)I2CDEV_M, 100000);

    /* Enable Slave I2C operation */
    I2C_Cmd((en_I2C_unitId)I2CDEV_M, I2C_MASTER_MODE, ENABLE);

    /* Transmit -------------------------------------------------------- */
    _DBG_("Press '1' to transmit");
    while (_DG != '1');


    /* Initialize buffer */
    Buffer_Init(1);
     _DBG_("Transmit Data: ");
    Buffer_Print((uint8_t*)Master_Buf, sizeof(Master_Buf));

    /* Start I2C slave device first */
    transferMCfg.sl_addr7bit = I2CDEV_S_ADDR;
    transferMCfg.tx_data = Master_Buf;
    transferMCfg.tx_length = sizeof(Master_Buf);
    transferMCfg.rx_data = NULL;
    transferMCfg.rx_length = 0;
    transferMCfg.retransmissions_max = 3;
    transferMCfg.tx_count = 0;
    transferMCfg.rx_count = 0;
    transferMCfg.retransmissions_count = 0;
     #if (I2CDEV_TRANSFER_POLLING == 0)
    complete = FALSE;
    I2C_MasterTransferData((en_I2C_unitId)I2CDEV_M, &transferMCfg, I2C_TRANSFER_INTERRUPT);
     while(!complete) ;
     #else
    I2C_MasterTransferData((en_I2C_unitId)I2CDEV_M, &transferMCfg, I2C_TRANSFER_POLLING);
    #endif


    /* Receive -------------------------------------------------------- */
    _DBG_("Press '2' to receive");
    while(_DG != '2');

    /* Initialize buffer */
    Buffer_Init(0);

    /* Start I2C slave device first */
    transferMCfg.sl_addr7bit = I2CDEV_S_ADDR;
    transferMCfg.tx_data = NULL ;
    transferMCfg.tx_length = 0;
    transferMCfg.rx_data = Master_Buf;
    transferMCfg.rx_length = sizeof(Master_Buf);
    transferMCfg.retransmissions_max = 3;
    transferMCfg.tx_count = 0;
    transferMCfg.rx_count = 0;
    transferMCfg.retransmissions_count = 0;
     #if (I2CDEV_TRANSFER_POLLING == 0)
    complete = FALSE;
    I2C_MasterTransferData((en_I2C_unitId)I2CDEV_M, &transferMCfg, I2C_TRANSFER_INTERRUPT);
     while(!complete) ;
     #else
    I2C_MasterTransferData((en_I2C_unitId)I2CDEV_M, &transferMCfg, I2C_TRANSFER_POLLING);
    #endif

    pdat = (uint8_t*)Master_Buf;
    _DBG_("Receive Data: ");
    Buffer_Print((uint8_t*)Master_Buf, sizeof(Master_Buf));

    // Verify
    for (tempp = 0; tempp < sizeof(Master_Buf); tempp++){
        if (*pdat != (tempp)){
                 _DBG_("Verify error ");
             break;
        }
    pdat++;
    }
    if (tempp == sizeof(Master_Buf)){
        _DBG_("Verify successfully");
    }

    /* Transmit and receive -------------------------------------------------------- */
    _DBG_("Press '3' to Transmit, then repeat start and receive...");
    while (_DG != '3');

    /* Initialize buffer */
    Buffer_Init(0);
    master_test[0] = 0xAA;
    master_test[1] = 0x55;

    /* Start I2C slave device first */
    transferMCfg.sl_addr7bit = I2CDEV_S_ADDR;
    transferMCfg.tx_data = master_test ;
    transferMCfg.tx_length = sizeof(master_test);
    transferMCfg.rx_data = Master_Buf;
    transferMCfg.rx_length = sizeof(Master_Buf);
    transferMCfg.tx_count = 0;
    transferMCfg.rx_count = 0;
    transferMCfg.retransmissions_count = 0;
    transferMCfg.retransmissions_max = 3;
     #if (I2CDEV_TRANSFER_POLLING == 0)
    complete = FALSE;
    I2C_MasterTransferData((en_I2C_unitId)I2CDEV_M, &transferMCfg, I2C_TRANSFER_INTERRUPT);
     while(!complete) ;
     #else
    I2C_MasterTransferData((en_I2C_unitId)I2CDEV_M, &transferMCfg, I2C_TRANSFER_POLLING);
    #endif

    pdat = (uint8_t*)Master_Buf;
    _DBG_("Transmit Data: ");
    Buffer_Print((uint8_t*)master_test, sizeof(master_test));
    _DBG_("Receive Data: ");
    Buffer_Print((uint8_t*)Master_Buf, sizeof(Master_Buf));
    // Verify
    for (tempp = 0; tempp < sizeof(Master_Buf); tempp++){
        if (*pdat++ != tempp){
            _DBG_("Verify error: ");
            break;
        }
    }
    if (tempp == sizeof(Master_Buf)){
        _DBG_("Verify successfully");
    }
    I2C_DeInit((en_I2C_unitId)I2CDEV_M);
     /* Loop forever */
    while(1);
}