“线程”中讨论的其它部件:TL16C752, 测试, TL16C752D
您好,我目前正在将此64字节 FIFO (TL16C752)与 C6747 DSP 一起使用。 目前,我使用 FIFO 在50Hz (20毫秒周期)时接收26字节的定期消息。 我已从 INTA 设置中断以触发我的读取功能。 下面是 FIFO UART 的设置。
UART 设置:1个起始位,1个停止位,8个数据位,115200波特,无奇偶校验。
输入 clk 为24MHz (XTAL1)
波特率= 24MHz (输入 clk)/1 (重新计算器) /13 (DLL)/16
= 115,385
/******************************************************** /
无效配置 Uart (无效)
{
SK_TL16C752_LCR |= 0x80;//启用除数寄存器
SK_TL16C752_DLL = 13;//将分隔值设置为13
SK_TL16C752_DLH = 0;
UINT8 DLL = SK_TL16C752_DLL;//读取分隔符的值
UINT8 DLH = SK_TL16C752_DLH;
UINT16分隔符= DLL | DLH <<8;
SK_TL16C752_LCR &= 0x7F;//禁用除数寄存器
//将单词长度设置为8位,1个停止,无奇偶校验,无中断 Ctrl,禁用除数器锁存
SK_TL16C752_LCR = 0x3;
SK_TL16C752_FCR |= 0x47;//触发时为16个字符
//启用 RHR 中断
SK_TL16C752_IER |= 0x01;
}
/*********************************************************** /
//接收功能
接收无效()
{
行动
{
tLSR = SK_TL16C752_LSR;//获取注册状态
log_printf(&TRAT),“tLSR:0x%x”,tLSR);
recv_BUF[RDATA_index]= SK_TL16C752_RHR;
log_printf (跟踪,"0x%x %x",RECV_BUF[RDATA_index],tLSR);
RDATA_index++;
} While ((((tLSR = SK_TL16C752_LSR)& 0x01));
log_printf (&trace,">>>>>>>>>>>>>>>>>> buf %d ",RDATA_INDEX);
}
/********************************************** /
结果如下:
1297 0x34 E1
1298 0x12 E1
1299 0xcd E1
1300 0xab E1
1301 0x16 E1
1302 0x0 E1
1303 0x11 E1
1304 0x0 E1
1305 0x1f E1
1306 0x1 E1
1307 0x0 E1
1308 0x0 E1
1309 0x0 E1
1310 0x0 E1
1311 0x80 E1
1312 0x80 E1
1313 0x80 E9
1314 0x80 E9
1315 0x80 E9
1316 0x80 E9
1317 0x80 E9
1318 0x80 E9
1319 0x80 E9
1320 0x80 E9
1321 0x3b E9
1322 0xe4 61.
1323 >>>>>>>>>> 女性26.
1324 0x34 E1
1325 0x12 E1
1326 0xcd E1
1327 0xab E1
1328 0x16 E1
1329 0x0 E1
1330 0x11 E1
1331 0x0 E1
1332 0x20 E1
1333 0x1 E1
1334 0x0 E1
1335 0x0 E1
1336 0x0 E1
1337 0x0 E1
1338 0x80 E1
1339 0x80 E1
1340 0x80 E9
1341 0x80 E9
1342 0x80 E9
1343 0x80 E9
1344 0x80 E9
1345 0x80 E9
1346 0x80 E9
1347 0x80 E9
1348 0xc7 61.
1349 0xFE 61
1350 >>>>>>> 女性26.
1351 0x34 E1
1352 0x12 E1
1353 0xcd E1
1354 0xab E1
1355 0x16 E1
1356 0x0 E1
1357 0x11 E1
1358 0x0 E1
1359 0x21 E1
1360 0x1 E1
1361 0x0 E1
1362 0x0 E1
1363 0x0 E1
1364 0x0 E1
1365 0x0 E1
1366 0x80 E1
1367 0x80 E1
1368 0x80 E9
1369 0x80 E9
1370 0x80 E9
1371 0x80 E9
1372 0x80 E9
1373 0x80 E9
1374 0x80 E9
1375 0x3f E9
1376 0xf9 61.
1377 >>>>>>> 女性26.
1378 0x34 E1
1379 0x12 E1
1380 0xcd E1
1381 0xab E1
1382 0x16 E1
1383 0x0 E1
1384 0x11 E1
1385 0x0 E1
1386 0x22 E1
1387 0x1 E1
1388 0x0 E1
1389 0x0 E1
1390 0x0 E1
1391 0x0 E1
1392 0x0 E1
1393 0x80 E1
1394 0x80 E1
1395 0x80 E9
1396 0x80 E9
1397 0x80 E9
1398 0x80 E9
1399 0x80 E9
1400 0x80 E9
1401 0x80 E9
1402 0xdb E9
1403 0xbe 61
1404 >>>>>>> 女性26.
我的预期消息是0x34 0x12 0xCD 0xAB 0x16 0x00 0x11 0x00 (2字节计数器)(14字节为零)(2字节校验和)
奇怪的是,我一直在消息中间看到0x80,我猜0x80是因为出现帧错误而停止位。 此外,末尾的校验和也不正确。 有什么想法可以解决这个问题?