Exemplo n.º 1
0
void uart_init(uint8_t uartIdx, uint16_t baudrate, uint8_t tx8, uint8_t rx8)						//Rcv function of Uart reset
{

    uart[uartIdx].TxM = tx8;// 8bit data tx
    uart[uartIdx].RxM = rx8;// 8bit data rx

    SetBaud(uartIdx, baudrate);
    uart[uartIdx].RxEN= 1;
    uart[uartIdx].TxEN = 1;
    serial_data_init(uartIdx);
    uart_recv[uartIdx].inited = 1;
}
int main(void) 
{
   SetClock();
   ConfigPins();
   SetBaud();
   UARTCharPut(UART0_BASE, 'H');
   UARTCharPut(UART0_BASE, 'I');
    
    while (1)
    {
    	CheckReceivedBits();
    	
	}

}
Exemplo n.º 3
0
static int Speed( void )
{
    int  sync_point;

    if( !MarchToTheSameDrummer() ) return( FAIL );
    sync_point = MAX_BAUD_SET_TICKS;
    for( ;; ) {
        if( SetBaud( BaudCounter, &sync_point ) ) break;
        ++BaudCounter;                /*  ... try next slower speed */
        if( BaudCounter >= MIN_BAUD ) {
            BaudCounter = MIN_BAUD;
            return( FAIL );
        }
    }
    return( SUCCESS );      /* link established */
}
Exemplo n.º 4
0
unsigned long _download_main_file(ITL_FILE_DOWNLOAD * itlFile)
{
    unsigned char chk;
    unsigned long cur_block;
    unsigned long i;
    unsigned long block_offset;
    CloseSSPPort(itlFile->port);
    sleep(2);
    OpenSSPPort(itlFile->portname);
    SetBaud(itlFile->port,itlFile->baud);
    //ensure buffer clear after restart
    if (_send_download_command(&itlFile->fData[6],1,ram_OK_ACK,itlFile) == 0)
        return DATA_TRANSFER_FAIL;

    if (_send_download_command(itlFile->fData,128,ram_OK_ACK,itlFile) == 0)
        return DATA_TRANSFER_FAIL;

    for (cur_block = 1; cur_block <= itlFile->NumberOfBlocks; ++cur_block)
    {
        block_offset = 128 + ((cur_block-1)*itlFile->dwnlBlockSize) + itlFile->NumberOfRamBytes;
        chk = 0;
        for(i = 0; i < itlFile->dwnlBlockSize; ++i)
            chk ^= itlFile->fData[block_offset + i];
        /*
        for(i = 0; i < itlFile->dwnlBlockSize/128; ++i)
        {
            WriteData(&itlFile->fData[block_offset + (i*128)],128,itlFile->port);
            while (TransmitComplete(itlFile->port) == 0)
                    //usleep(1000);
                    sleep(0);

        }*/
        WriteData(&itlFile->fData[block_offset ],itlFile->dwnlBlockSize,itlFile->port);
        while (TransmitComplete(itlFile->port) == 0)
            usleep(1000);
        if (_send_download_command(&chk,1,chk,itlFile) ==0)
            return DATA_TRANSFER_FAIL;

        download_block = cur_block;
    }
    return DOWNLOAD_COMPLETE;

}
Exemplo n.º 5
0
unsigned long _download_ram_file(ITL_FILE_DOWNLOAD * itlFile, SSP_COMMAND * sspC)
{
    unsigned long i;
    unsigned long baud;
    unsigned char buffer;
    int numRamBlocks;
    //initiate communication
	sspC->CommandDataLength = 2;
	sspC->CommandData[0] = SSP_CMD_PROGRAM;
	sspC->CommandData[1] = SSP_PROGRAM_RAM;

	if (SSPSendCommand(itlFile->port,sspC) == 0)
        return PROG_COMMAND_FAIL;
    if (sspC->ResponseData[0] != SSP_RESPONSE_OK)
        return PROG_COMMAND_FAIL;

    //calculate block size
    itlFile->dwnlBlockSize = ((unsigned short)sspC->ResponseData[1]) + (((unsigned short)sspC->ResponseData[2])<<8);

    sspC->EncryptionStatus = 0;
    sspC->CommandDataLength = 128;
    for (i = 0; i < 128; ++i)
        sspC->CommandData[i] = itlFile->fData[i];

    SSPSendCommand(itlFile->port,sspC);
    if (sspC->ResponseData[ 0] == SSP_RESPONSE_HEADER_FAILURE)
        return HEADER_FAIL;
    else if (sspC->ResponseData[0] != SSP_RESPONSE_OK)
        return DATA_TRANSFER_FAIL;

    baud = 38400;
	if((itlFile->fData[5] != 0x9) && (itlFile->fData[5] != 0xA)){ //NV9/10
		baud = 0;
		for(i = 0; i < 4; i++){
			baud += (long)itlFile->fData[68 + i] << ((3- i)  * 8);
		}
		if(baud == 0) baud = 38400;
	}
	SetBaud(itlFile->port,baud);
    itlFile->baud = baud;

    usleep(500000);

    numRamBlocks = itlFile->NumberOfRamBytes/RAM_DWNL_BLOCK_SIZE;

    for (i = 0; i < numRamBlocks; i++){
		WriteData(&itlFile->fData[128+(i*RAM_DWNL_BLOCK_SIZE)],RAM_DWNL_BLOCK_SIZE,itlFile->port);
		while (TransmitComplete(itlFile->port) == 0)
                    usleep(1000);

		//ramStatus.currentRamBlocks = i;
	}

    if ((itlFile->NumberOfRamBytes % RAM_DWNL_BLOCK_SIZE) != 0)
    {
        WriteData(&itlFile->fData[128+(i*RAM_DWNL_BLOCK_SIZE)],itlFile->NumberOfRamBytes % RAM_DWNL_BLOCK_SIZE,itlFile->port);
    }
    buffer = _read_single_byte_reply(itlFile,500);
    //check checksum
    if (itlFile->fData[0x10] != buffer)
        return DATA_TRANSFER_FAIL;

	return DOWNLOAD_COMPLETE;
}