NXP JN5169 UART波特率问题

被NXP JN5169的UART收数据大批量错误坑了一把,最后发现是NXP的速率计算因子误差太大导致。

写了个程序,把所有常见的波特率匹配了一把,匹配的结果(相对误差在千分之七以下)即波特率的计算因子建议值如下:

ratio=0.007000

Divisor=414 Cpb=15 rate=2415 target=2400 error=1.006250

Divisor=415 Cpb=15 rate=2409 target=2400 error=1.003750

Divisor=416 Cpb=15 rate=2403 target=2400 error=1.001250

Divisor=417 Cpb=15 rate=2398 target=2400 error=0.999167

Divisor=418 Cpb=15 rate=2392 target=2400 error=0.996667

Divisor=419 Cpb=15 rate=2386 target=2400 error=0.994167

Divisor=442 Cpb=14 rate=2413 target=2400 error=1.005417

Divisor=443 Cpb=14 rate=2407 target=2400 error=1.002917

Divisor=444 Cpb=14 rate=2402 target=2400 error=1.000833

Divisor=445 Cpb=14 rate=2397 target=2400 error=0.998750

Divisor=446 Cpb=14 rate=2391 target=2400 error=0.996250

Divisor=447 Cpb=14 rate=2386 target=2400 error=0.994167

Divisor=473 Cpb=13 rate=2416 target=2400 error=1.006667

Divisor=474 Cpb=13 rate=2411 target=2400 error=1.004583

Divisor=475 Cpb=13 rate=2406 target=2400 error=1.002500

Divisor=476 Cpb=13 rate=2400 target=2400 error=1.000000

Divisor=477 Cpb=13 rate=2395 target=2400 error=0.997917

Divisor=478 Cpb=13 rate=2390 target=2400 error=0.995833

Divisor=479 Cpb=13 rate=2385 target=2400 error=0.993750

Divisor=510 Cpb=12 rate=2413 target=2400 error=1.005417

Divisor=511 Cpb=12 rate=2408 target=2400 error=1.003333

Divisor=512 Cpb=12 rate=2403 target=2400 error=1.001250

Divisor=513 Cpb=12 rate=2399 target=2400 error=0.999583

Divisor=514 Cpb=12 rate=2394 target=2400 error=0.997500

Divisor=515 Cpb=12 rate=2389 target=2400 error=0.995417

Divisor=516 Cpb=12 rate=2385 target=2400 error=0.993750

Divisor=552 Cpb=11 rate=2415 target=2400 error=1.006250

Divisor=553 Cpb=11 rate=2411 target=2400 error=1.004583

Divisor=554 Cpb=11 rate=2406 target=2400 error=1.002500

Divisor=555 Cpb=11 rate=2402 target=2400 error=1.000833

Divisor=556 Cpb=11 rate=2398 target=2400 error=0.999167

Divisor=557 Cpb=11 rate=2393 target=2400 error=0.997083

Divisor=558 Cpb=11 rate=2389 target=2400 error=0.995417

Divisor=559 Cpb=11 rate=2385 target=2400 error=0.993750

Divisor=602 Cpb=10 rate=2416 target=2400 error=1.006667

Divisor=603 Cpb=10 rate=2412 target=2400 error=1.005000

Divisor=604 Cpb=10 rate=2408 target=2400 error=1.003333

Divisor=605 Cpb=10 rate=2404 target=2400 error=1.001667

Divisor=606 Cpb=10 rate=2400 target=2400 error=1.000000

Divisor=607 Cpb=10 rate=2396 target=2400 error=0.998333

Divisor=608 Cpb=10 rate=2392 target=2400 error=0.996667

Divisor=609 Cpb=10 rate=2388 target=2400 error=0.995000

Divisor=610 Cpb=10 rate=2384 target=2400 error=0.993333

Divisor=662 Cpb=9 rate=2416 target=2400 error=1.006667

Divisor=663 Cpb=9 rate=2413 target=2400 error=1.005417

Divisor=664 Cpb=9 rate=2409 target=2400 error=1.003750

Divisor=665 Cpb=9 rate=2406 target=2400 error=1.002500

Divisor=666 Cpb=9 rate=2402 target=2400 error=1.000833

Divisor=667 Cpb=9 rate=2398 target=2400 error=0.999167

Divisor=668 Cpb=9 rate=2395 target=2400 error=0.997917

Divisor=669 Cpb=9 rate=2391 target=2400 error=0.996250

Divisor=670 Cpb=9 rate=2388 target=2400 error=0.995000

Divisor=671 Cpb=9 rate=2384 target=2400 error=0.993333

Divisor=736 Cpb=8 rate=2415 target=2400 error=1.006250

Divisor=737 Cpb=8 rate=2412 target=2400 error=1.005000

Divisor=738 Cpb=8 rate=2408 target=2400 error=1.003333

Divisor=739 Cpb=8 rate=2405 target=2400 error=1.002083

Divisor=740 Cpb=8 rate=2402 target=2400 error=1.000833

Divisor=741 Cpb=8 rate=2399 target=2400 error=0.999583

Divisor=742 Cpb=8 rate=2395 target=2400 error=0.997917

Divisor=743 Cpb=8 rate=2392 target=2400 error=0.996667

Divisor=744 Cpb=8 rate=2389 target=2400 error=0.995417

Divisor=745 Cpb=8 rate=2386 target=2400 error=0.994167

Divisor=828 Cpb=7 rate=2415 target=2400 error=1.006250

Divisor=829 Cpb=7 rate=2412 target=2400 error=1.005000

Divisor=830 Cpb=7 rate=2409 target=2400 error=1.003750

Divisor=831 Cpb=7 rate=2406 target=2400 error=1.002500

Divisor=832 Cpb=7 rate=2403 target=2400 error=1.001250

Divisor=833 Cpb=7 rate=2400 target=2400 error=1.000000

Divisor=834 Cpb=7 rate=2398 target=2400 error=0.999167

Divisor=835 Cpb=7 rate=2395 target=2400 error=0.997917

Divisor=836 Cpb=7 rate=2392 target=2400 error=0.996667

Divisor=837 Cpb=7 rate=2389 target=2400 error=0.995417

Divisor=838 Cpb=7 rate=2386 target=2400 error=0.994167

Divisor=946 Cpb=6 rate=2416 target=2400 error=1.006667

Divisor=947 Cpb=6 rate=2413 target=2400 error=1.005417

Divisor=948 Cpb=6 rate=2411 target=2400 error=1.004583

Divisor=949 Cpb=6 rate=2408 target=2400 error=1.003333

Divisor=950 Cpb=6 rate=2406 target=2400 error=1.002500

Divisor=951 Cpb=6 rate=2403 target=2400 error=1.001250

Divisor=952 Cpb=6 rate=2400 target=2400 error=1.000000

Divisor=953 Cpb=6 rate=2398 target=2400 error=0.999167

Divisor=954 Cpb=6 rate=2395 target=2400 error=0.997917

Divisor=955 Cpb=6 rate=2393 target=2400 error=0.997083

Divisor=956 Cpb=6 rate=2390 target=2400 error=0.995833

Divisor=957 Cpb=6 rate=2388 target=2400 error=0.995000

Divisor=958 Cpb=6 rate=2385 target=2400 error=0.993750

Divisor=1104 Cpb=5 rate=2415 target=2400 error=1.006250

Divisor=1105 Cpb=5 rate=2413 target=2400 error=1.005417

Divisor=1106 Cpb=5 rate=2411 target=2400 error=1.004583

Divisor=1107 Cpb=5 rate=2408 target=2400 error=1.003333

Divisor=1108 Cpb=5 rate=2406 target=2400 error=1.002500

Divisor=1109 Cpb=5 rate=2404 target=2400 error=1.001667

Divisor=1110 Cpb=5 rate=2402 target=2400 error=1.000833

Divisor=1111 Cpb=5 rate=2400 target=2400 error=1.000000

Divisor=1112 Cpb=5 rate=2398 target=2400 error=0.999167

Divisor=1113 Cpb=5 rate=2395 target=2400 error=0.997917

Divisor=1114 Cpb=5 rate=2393 target=2400 error=0.997083

Divisor=1115 Cpb=5 rate=2391 target=2400 error=0.996250

Divisor=1116 Cpb=5 rate=2389 target=2400 error=0.995417

Divisor=1117 Cpb=5 rate=2387 target=2400 error=0.994583

Divisor=1118 Cpb=5 rate=2385 target=2400 error=0.993750

Divisor=1324 Cpb=4 rate=2416 target=2400 error=1.006667

Divisor=1325 Cpb=4 rate=2415 target=2400 error=1.006250

Divisor=1326 Cpb=4 rate=2413 target=2400 error=1.005417

Divisor=1327 Cpb=4 rate=2411 target=2400 error=1.004583

Divisor=1328 Cpb=4 rate=2409 target=2400 error=1.003750

Divisor=1329 Cpb=4 rate=2407 target=2400 error=1.002917

Divisor=1330 Cpb=4 rate=2406 target=2400 error=1.002500

Divisor=1331 Cpb=4 rate=2404 target=2400 error=1.001667

Divisor=1332 Cpb=4 rate=2402 target=2400 error=1.000833

Divisor=1333 Cpb=4 rate=2400 target=2400 error=1.000000

Divisor=1334 Cpb=4 rate=2398 target=2400 error=0.999167

Divisor=1335 Cpb=4 rate=2397 target=2400 error=0.998750

Divisor=1336 Cpb=4 rate=2395 target=2400 error=0.997917

Divisor=1337 Cpb=4 rate=2393 target=2400 error=0.997083

Divisor=1338 Cpb=4 rate=2391 target=2400 error=0.996250

Divisor=1339 Cpb=4 rate=2389 target=2400 error=0.995417

Divisor=1340 Cpb=4 rate=2388 target=2400 error=0.995000

Divisor=1341 Cpb=4 rate=2386 target=2400 error=0.994167

Divisor=1342 Cpb=4 rate=2384 target=2400 error=0.993333

Divisor=1655 Cpb=3 rate=2416 target=2400 error=1.006667

Divisor=1656 Cpb=3 rate=2415 target=2400 error=1.006250

Divisor=1657 Cpb=3 rate=2414 target=2400 error=1.005833

Divisor=1658 Cpb=3 rate=2412 target=2400 error=1.005000

Divisor=1659 Cpb=3 rate=2411 target=2400 error=1.004583

Divisor=1660 Cpb=3 rate=2409 target=2400 error=1.003750

Divisor=1661 Cpb=3 rate=2408 target=2400 error=1.003333

Divisor=1662 Cpb=3 rate=2406 target=2400 error=1.002500

Divisor=1663 Cpb=3 rate=2405 target=2400 error=1.002083

Divisor=1664 Cpb=3 rate=2403 target=2400 error=1.001250

Divisor=1665 Cpb=3 rate=2402 target=2400 error=1.000833

Divisor=1666 Cpb=3 rate=2400 target=2400 error=1.000000

Divisor=1667 Cpb=3 rate=2399 target=2400 error=0.999583

Divisor=1668 Cpb=3 rate=2398 target=2400 error=0.999167

Divisor=1669 Cpb=3 rate=2396 target=2400 error=0.998333

Divisor=1670 Cpb=3 rate=2395 target=2400 error=0.997917

Divisor=1671 Cpb=3 rate=2393 target=2400 error=0.997083

Divisor=1672 Cpb=3 rate=2392 target=2400 error=0.996667

Divisor=1673 Cpb=3 rate=2390 target=2400 error=0.995833

Divisor=1674 Cpb=3 rate=2389 target=2400 error=0.995417

Divisor=1675 Cpb=3 rate=2388 target=2400 error=0.995000

Divisor=1676 Cpb=3 rate=2386 target=2400 error=0.994167

Divisor=1677 Cpb=3 rate=2385 target=2400 error=0.993750

Divisor=207 Cpb=15 rate=4830 target=4800 error=1.006250

Divisor=208 Cpb=15 rate=4807 target=4800 error=1.001458

Divisor=209 Cpb=15 rate=4784 target=4800 error=0.996667

Divisor=221 Cpb=14 rate=4826 target=4800 error=1.005417

Divisor=222 Cpb=14 rate=4804 target=4800 error=1.000833

Divisor=223 Cpb=14 rate=4783 target=4800 error=0.996458

Divisor=237 Cpb=13 rate=4822 target=4800 error=1.004583

Divisor=238 Cpb=13 rate=4801 target=4800 error=1.000208

Divisor=239 Cpb=13 rate=4781 target=4800 error=0.996042

Divisor=255 Cpb=12 rate=4826 target=4800 error=1.005417

Divisor=256 Cpb=12 rate=4807 target=4800 error=1.001458

Divisor=257 Cpb=12 rate=4788 target=4800 error=0.997500

Divisor=258 Cpb=12 rate=4770 target=4800 error=0.993750

Divisor=276 Cpb=11 rate=4830 target=4800 error=1.006250

Divisor=277 Cpb=11 rate=4813 target=4800 error=1.002708

Divisor=278 Cpb=11 rate=4796 target=4800 error=0.999167

Divisor=279 Cpb=11 rate=4778 target=4800 error=0.995417

Divisor=301 Cpb=10 rate=4832 target=4800 error=1.006667

Divisor=302 Cpb=10 rate=4816 target=4800 error=1.003333

Divisor=303 Cpb=10 rate=4800 target=4800 error=1.000000

Divisor=304 Cpb=10 rate=4784 target=4800 error=0.996667

Divisor=305 Cpb=10 rate=4769 target=4800 error=0.993542

Divisor=331 Cpb=9 rate=4833 target=4800 error=1.006875

Divisor=332 Cpb=9 rate=4819 target=4800 error=1.003958

Divisor=333 Cpb=9 rate=4804 target=4800 error=1.000833

Divisor=334 Cpb=9 rate=4790 target=4800 error=0.997917

Divisor=335 Cpb=9 rate=4776 target=4800 error=0.995000

Divisor=368 Cpb=8 rate=4830 target=4800 error=1.006250

Divisor=369 Cpb=8 rate=4817 target=4800 error=1.003542

Divisor=370 Cpb=8 rate=4804 target=4800 error=1.000833

Divisor=371 Cpb=8 rate=4791 target=4800 error=0.998125

Divisor=372 Cpb=8 rate=4778 target=4800 error=0.995417

Divisor=414 Cpb=7 rate=4830 target=4800 error=1.006250

Divisor=415 Cpb=7 rate=4819 target=4800 error=1.003958

Divisor=416 Cpb=7 rate=4807 target=4800 error=1.001458

Divisor=417 Cpb=7 rate=4796 target=4800 error=0.999167

Divisor=418 Cpb=7 rate=4784 target=4800 error=0.996667

Divisor=419 Cpb=7 rate=4773 target=4800 error=0.994375

Divisor=473 Cpb=6 rate=4832 target=4800 error=1.006667

Divisor=474 Cpb=6 rate=4822 target=4800 error=1.004583

Divisor=475 Cpb=6 rate=4812 target=4800 error=1.002500

Divisor=476 Cpb=6 rate=4801 target=4800 error=1.000208

Divisor=477 Cpb=6 rate=4791 target=4800 error=0.998125

Divisor=478 Cpb=6 rate=4781 target=4800 error=0.996042

Divisor=479 Cpb=6 rate=4771 target=4800 error=0.993958

Divisor=552 Cpb=5 rate=4830 target=4800 error=1.006250

Divisor=553 Cpb=5 rate=4822 target=4800 error=1.004583

Divisor=554 Cpb=5 rate=4813 target=4800 error=1.002708

Divisor=555 Cpb=5 rate=4804 target=4800 error=1.000833

Divisor=556 Cpb=5 rate=4796 target=4800 error=0.999167

Divisor=557 Cpb=5 rate=4787 target=4800 error=0.997292

Divisor=558 Cpb=5 rate=4778 target=4800 error=0.995417

Divisor=559 Cpb=5 rate=4770 target=4800 error=0.993750

Divisor=662 Cpb=4 rate=4833 target=4800 error=1.006875

Divisor=663 Cpb=4 rate=4826 target=4800 error=1.005417

Divisor=664 Cpb=4 rate=4819 target=4800 error=1.003958

Divisor=665 Cpb=4 rate=4812 target=4800 error=1.002500

Divisor=666 Cpb=4 rate=4804 target=4800 error=1.000833

Divisor=667 Cpb=4 rate=4797 target=4800 error=0.999375

Divisor=668 Cpb=4 rate=4790 target=4800 error=0.997917

Divisor=669 Cpb=4 rate=4783 target=4800 error=0.996458

Divisor=670 Cpb=4 rate=4776 target=4800 error=0.995000

Divisor=671 Cpb=4 rate=4769 target=4800 error=0.993542

Divisor=828 Cpb=3 rate=4830 target=4800 error=1.006250

Divisor=829 Cpb=3 rate=4825 target=4800 error=1.005208

Divisor=830 Cpb=3 rate=4819 target=4800 error=1.003958

Divisor=831 Cpb=3 rate=4813 target=4800 error=1.002708

Divisor=832 Cpb=3 rate=4807 target=4800 error=1.001458

Divisor=833 Cpb=3 rate=4801 target=4800 error=1.000208

Divisor=834 Cpb=3 rate=4796 target=4800 error=0.999167

Divisor=835 Cpb=3 rate=4790 target=4800 error=0.997917

Divisor=836 Cpb=3 rate=4784 target=4800 error=0.996667

Divisor=837 Cpb=3 rate=4778 target=4800 error=0.995417

Divisor=838 Cpb=3 rate=4773 target=4800 error=0.994375

Divisor=839 Cpb=3 rate=4767 target=4800 error=0.993125

Divisor=104 Cpb=15 rate=9615 target=9600 error=1.001562

Divisor=111 Cpb=14 rate=9609 target=9600 error=1.000937

Divisor=119 Cpb=13 rate=9603 target=9600 error=1.000312

Divisor=128 Cpb=12 rate=9615 target=9600 error=1.001562

Divisor=129 Cpb=12 rate=9540 target=9600 error=0.993750

Divisor=138 Cpb=11 rate=9661 target=9600 error=1.006354

Divisor=139 Cpb=11 rate=9592 target=9600 error=0.999167

Divisor=151 Cpb=10 rate=9632 target=9600 error=1.003333

Divisor=152 Cpb=10 rate=9569 target=9600 error=0.996771

Divisor=166 Cpb=9 rate=9638 target=9600 error=1.003958

Divisor=167 Cpb=9 rate=9580 target=9600 error=0.997917

Divisor=184 Cpb=8 rate=9661 target=9600 error=1.006354

Divisor=185 Cpb=8 rate=9609 target=9600 error=1.000937

Divisor=186 Cpb=8 rate=9557 target=9600 error=0.995521

Divisor=207 Cpb=7 rate=9661 target=9600 error=1.006354

Divisor=208 Cpb=7 rate=9615 target=9600 error=1.001562

Divisor=209 Cpb=7 rate=9569 target=9600 error=0.996771

Divisor=237 Cpb=6 rate=9644 target=9600 error=1.004583

Divisor=238 Cpb=6 rate=9603 target=9600 error=1.000312

Divisor=239 Cpb=6 rate=9563 target=9600 error=0.996146

Divisor=276 Cpb=5 rate=9661 target=9600 error=1.006354

Divisor=277 Cpb=5 rate=9626 target=9600 error=1.002708

Divisor=278 Cpb=5 rate=9592 target=9600 error=0.999167

Divisor=279 Cpb=5 rate=9557 target=9600 error=0.995521

Divisor=331 Cpb=4 rate=9667 target=9600 error=1.006979

Divisor=332 Cpb=4 rate=9638 target=9600 error=1.003958

Divisor=333 Cpb=4 rate=9609 target=9600 error=1.000937

Divisor=334 Cpb=4 rate=9580 target=9600 error=0.997917

Divisor=335 Cpb=4 rate=9552 target=9600 error=0.995000

Divisor=414 Cpb=3 rate=9661 target=9600 error=1.006354

Divisor=415 Cpb=3 rate=9638 target=9600 error=1.003958

Divisor=416 Cpb=3 rate=9615 target=9600 error=1.001562

Divisor=417 Cpb=3 rate=9592 target=9600 error=0.999167

Divisor=418 Cpb=3 rate=9569 target=9600 error=0.996771

Divisor=419 Cpb=3 rate=9546 target=9600 error=0.994375

Divisor=52 Cpb=15 rate=19230 target=19200 error=1.001562

Divisor=64 Cpb=12 rate=19230 target=19200 error=1.001562

Divisor=69 Cpb=11 rate=19323 target=19200 error=1.006406

Divisor=76 Cpb=10 rate=19138 target=19200 error=0.996771

Divisor=83 Cpb=9 rate=19277 target=19200 error=1.004010

Divisor=92 Cpb=8 rate=19323 target=19200 error=1.006406

Divisor=93 Cpb=8 rate=19115 target=19200 error=0.995573

Divisor=104 Cpb=7 rate=19230 target=19200 error=1.001562

Divisor=119 Cpb=6 rate=19207 target=19200 error=1.000365

Divisor=138 Cpb=5 rate=19323 target=19200 error=1.006406

Divisor=139 Cpb=5 rate=19184 target=19200 error=0.999167

Divisor=166 Cpb=4 rate=19277 target=19200 error=1.004010

Divisor=167 Cpb=4 rate=19161 target=19200 error=0.997969

Divisor=207 Cpb=3 rate=19323 target=19200 error=1.006406

Divisor=208 Cpb=3 rate=19230 target=19200 error=1.001562

Divisor=209 Cpb=3 rate=19138 target=19200 error=0.996771

Divisor=26 Cpb=15 rate=38461 target=38400 error=1.001589

Divisor=32 Cpb=12 rate=38461 target=38400 error=1.001589

Divisor=38 Cpb=10 rate=38277 target=38400 error=0.996797

Divisor=46 Cpb=8 rate=38647 target=38400 error=1.006432

Divisor=52 Cpb=7 rate=38461 target=38400 error=1.001589

Divisor=69 Cpb=5 rate=38647 target=38400 error=1.006432

Divisor=83 Cpb=4 rate=38554 target=38400 error=1.004010

Divisor=104 Cpb=3 rate=38461 target=38400 error=1.001589

Divisor=23 Cpb=11 rate=57971 target=57600 error=1.006441

Divisor=31 Cpb=8 rate=57347 target=57600 error=0.995608

Divisor=46 Cpb=5 rate=57971 target=57600 error=1.006441

Divisor=69 Cpb=3 rate=57971 target=57600 error=1.006441

Divisor=23 Cpb=5 rate=115942 target=115200 error=1.006441

这下知道vAHI_UartSetBaudDivisor和vAHI_UartSetClocksPerBit的参数应该是多少了吧。

这样看来NXP自己的推荐值推荐的好差劲啊!!!

最后分享下穷举的程序源码:

#include <stdio.h>

	int main () {
	unsigned long i,j,k;
	unsigned long rate;
	unsigned long target[10]=
	{
		2400,
		4800,
		9600,
		19200,
		38400,
		57600,
		115200,
		230400,
		460800,
		921600};
	float ratio=0.007;

	printf("ratio=%f\n", ratio);
	for(k=0; k<10; k++)
	{
		for(i= 1; i< 65535; i++)
		{
			for(j=3; j<16; j++)
			{
				rate = 16000000/(i*(j+1));

				if(rate > target[k]*(1-ratio) && rate < target[k]*(1+ratio))
				{
					printf("Divisor=%-10d  Cpb=%-10d rate=%-10d target=%-10d error=%f\n", i, j, rate, 
						   target[k],((float)rate)/((float)target[k]));
				}

			}
		}
	}

	return 0;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yilonglucky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值