Hi, i'm using L3AA chip and trying to receive data from computer by Uart2. However it always receive 'ff'. Is there something wrong with my Uart2 setting?or my clock speed is slow so t cause data lost? below are my setting. or anyone have sample code of Uart? void rs232c_start(UC baud_rate) { INT_DISABLE(); rxd2_no=0; sfr_ctrl_uart2_init(baud_rate); ir_s2ric = 0; sfr_ctrl_int_set((UC *)&INT_UART2_RX, 02); re_u2c1 = 1; // Enable reception in UART2 INT_ENABLE(); } void sfr_ctrl_uart2_init(UC baud_rate) { // UART2 Transmit/Receive Control Register 1 (U2C1) te_u2c1 = 0; // TX Disable re_u2c1 = 0; // RX Disable u2irs_u2c1 = 1; // UART2 TX interrupt source - TXEPT u2rrm_u2c1 = 0; // Continuous receive mode disabled // UART2 Pin Select Register 0 (U2SR0) txd2sel0_u2sr0 = 1; // 01: P11_2 for TXD2 txd2sel1_u2sr0 = 0; rxd2sel0_u2sr0 = 1; // 01: P11_1 for RXD2 rxd2sel1_u2sr0 = 0; // UART2 Transmit/Receive Mode Register (U2MR) smd0_u2mr = 1; // Serial I/O mode select - UART mode, transfer data 8 bits long smd1_u2mr = 0; smd2_u2mr = 1; ckdir_u2mr = 0; // Internal clock selected stps_u2mr = 1; // Stop Bit Length = 2 prye_u2mr = 0; // Parity disabled iopol_u2mr = 0; df2en = 0; //RXD2 digital filter disable // UART2 Transmit/Receive Control Register 0 (U2C0) clk0_u2c0 = 0; // U2BRG count source select bit - f1 selected clk1_u2c0 = 0; crd_u2c0 = 1; // CTS/RTS function disabled nch_u2c0 = 0; // Data output select bit - CMOS output ckpol_u2c0 = 0; // CLK Polarity select bit - TX on falling edge, RX on rising edge uform_u2c0 = 0; // Transfer format select bit - LSB first // UART2 Bit Rate Register (U2BRG) u2brg = baud_rate; // Bit Rate Register // UART2 TX Interrupt Control Register ilvl0_s2tic = 0; ilvl1_s2tic = 0; ilvl2_s2tic = 0; // UART2 RX Interrupt Control Register ilvl0_s2ric = 0; ilvl1_s2ric = 0; ilvl2_s2ric = 0; } void sfr_ctrl_int_set(UC *int_regster, UC int_level) { UC *regster_ptr; regster_ptr = int_regster; *regster_ptr = int_level; } when interrupt is trigger below function will store the data pc_mode_uart2_rx_data_get((UC)u2rb); void pc_mode_uart2_rx_data_get(UC ucRXdata) { rxd2_buff[rxd2_addr] = ucRXdata; // Get the RX Data if (rxd2_addr 15) // Data storing address { rxd2_addr++; // } else // { rxd2_addr=0; // } rxd2_no++; // New Data Received }
↧