ADuc7023的i2c转串口时,用串口助手接收到的为乱码
问题如标题所示。。
7023驱动的芯片是sc16is740,keil工程里面主要有三部分,I2C.c,sc16is740.c,还有主函数。
下载后并用TTL电平转USB的线进行通信,用串口助手接收数据为乱码,其中波特率为9600,数据长度为8bit,停止位为1,无校验位。
恳请各位大神告知解决办法啊~
附上三个文件的程序代码:
main.c:
#include "includes.h"
uchar szTxDataTest[] = {
"1234"
};
int32 ucTxCount = 0; // Array index variable for szTxData[]
int32 ucRxCount = 0; // Array index variable for szRxData[]
void m_delay(int l)
{
while(l)
{l--;}
l++;
}
void SYS_Init()
{
POWKEY1 = 0x01; // Configure CPU Clock for 41.78MHz, CD=0
POWCON = 0x00;
POWKEY2 = 0xF4;
IRQCONE |= 0x0000000C;
IRQEN = BIT16 +BIT10; // Enable I2C1 Master,XIRQ1,and interrupts
}
void LEDint()
{
//GP1CON &=0XFFFFFCFF;
GP1DAT = 0x01000000; //P1.0 as an output -- LED pin
}
uchar Int_Char(uchar *strOut,int intData)
{
int tempInt=0;
tempInt=intData ;
//((int)(cap_float/10))%10+48;
*(strOut+4)=intData%10+48;
tempInt=tempInt/10;
*(strOut+3)=tempInt%10+48;
tempInt=tempInt/10;
*(strOut+2)=tempInt%10+48;
tempInt=tempInt/10;
*(strOut+1)=tempInt%10+48;
tempInt=tempInt/10;
*(strOut)=tempInt%10+48;
return 0;
}
int main(void)
{
unsigned char choseFlag = 0;
SYS_Init();
I2C_Init();
SC16IS740Init();
LEDint();
LEDOFF;
Int_Char(RxTxBuffDataStr,sizeof(szTxDataTest));
while(1)
{
sc16is740UartSendStr(szTxDataTest,sizeof(szTxDataTest));
m_delay(25000);
if(SC16IS740IRQ==1)
{
memset(RxTxBuffDataStr,0,sizeof(RxTxBuffDataStr));
ucRxCount=sc16is740UartRxStr(RxTxBuffDataStr,sizeof(RxTxBuffDataStr));
sc16is740UartSendStr(RxTxBuffDataStr,ucRxCount);
SC16IS740IRQ=0;
}
}
return 0;
}
void IRQ_Handler(void) __irq
{
unsigned long IRQSTATUS;
IRQSTATUS = IRQSTA;
I2C_IRQ_Handler();
if ((IRQSTATUS & BIT16) == BIT16) //XIRQ3 interrupt source n has finished
{
IRQCLRE |= BIT16;
SC16IS740IRQ=1;
}
}
}