专家您好!
我参考了应用手册 :https://www.ti.com/lit/an/spna213/spna213.pdf?ts=1596649942063&ref_url=https%253A%252F%252Fwww.google.com%252F 并尝试了本应用报告中讨论的源代码、但多缓冲区中数据传输的结果不正确。
以下是传输后的结果:
Hercule SCI DMA 示例-版本00.00.01.07
秘书长的报告
scidmaSend 示例- DMA 将单字节从 RAM 传输到 SCI
0 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 88 89 90 91 93 93 94 95 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 113 114 115 116 118 119 120 121 122 123 124 125 126 127 128 129 130 131 133 134 135 136 137 138 140 141 142 143 144 145 146 147 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 165 166 167 169 170 171 172 173 174 175 176 176 178 179 180 181 183 184 185 186 187 189 190 191 192 193 193 194 195 196 198 199 200 201 202 203 204 205 206 207 208 209 210 212 213 214 215 216 217 218 219 220 221 222 223 224 225 227 228 229 230 231 232 233 234 235 236 237 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 262 263 264 265 266 268 269 270 271 272 273 274 275 276 277 279 280 281 283 283 285 286 287 289 290 291 293 294 295 296 297 299 299 299 299 299 299 299 299 300 301 302 303 304 305 306 307 308 309 310 312 313 314 315 316 317 318 319 320 321 322 323 324 326 327 328 329 330 331 332 333 334 335 337 338 339 340 341 343 343 344 345 346 347 348 349 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 368 369 370 371 373 372 373 374 375 376 377 379 380 381 382 383 384 385 386 387 388 389 392 393 394 395 397 391 398 400 401 402 403 404 405 406 407 408 409 410 411 413 414 415 416 417 418 419 420 421 422 423 424 426 427 428 429 430 431 433 434 435 437 438 440 441 442 443 444 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 469 470 471 472 473 475 476 477 478 480 481 483 484 485 487 489 487 489 489 490 492 493 494 496 497 498 499
scidmaSend 示例完成、发送1890个字符
CPU 空闲计数:2267172
scidmaSend 示例-用于将单字节从 RAM 传输到 SCI 的 DMA
1 0 3 2 5 4 7 6 9 81 0121 1 31 1 4161 5 71 1 8102 9 12 2 2242 3 52 2 6282 7 92 3 0323 1 33 3 4363 5 73 3 8304 9 14 4 2444 3 54 4 6484 7 94 5 0525 1 35 5 4565 5 75 5 8506 9 16 6 2646 3 56 6686 7 96 7 0727 1 37 7 4767 5 77 7 8708 9 18 2848 3 58 8 6888 7 98 9 0929 1 39 9 4969 5 79 9 8901 001 101 201 301 401 501 601 701 811 911 011 111 311 411 511 611 711 821 921 021 221 321 421 521 621 621 721 831 931 031 331 331 431 531 731 841 941 941 0441 041 141 341 441 441 541 641 741 851 741 851 951 951 951 951 951 001 001 051 151 251 351 451 551 651 861 961 861 961 061 261 361 461 661 761 871 871 971 071 171 271 371 471 571 771 771 771 771 771 881 881 981 081 181 281 381 481 581 581 581 581 581 781 781 781 891 991 991 991 091 191 291 391 491 591 791 802 902 002 102 202 302 402 502 602 702 812 912 012 112 212 312 412 512 612 712 822 922 022 222 322 522 622 832 722 932 032 132 332 432 632 732 842 942 142 242 342 442 442 442 442 442 442 542 742 852 952 952 52 052 152 252 352 452 552 652 752 862 962 062 162 262 362 462 562 662 762 872 972 682 072 172 272 472 472 572 672 772 882 982 082 182 282 582 382 782 382 782 892 992 092 192 292 392 392 392 592 592 692 792 803 903 003 103 303 403 503 603 703 813 013 113 213 313 413 613 713 713 823 923 023 023 023 123 323 523 623 833 933 033 233 333 433 433 433 433 633 733 733 843 943 043 143 343 443 443 543 643 843 853 743 953 053 153 253 353 793 453 653 553 753 863 963 063 163 363 363 663 763 873 973 073 173 373 373 373 373 573 773 773 773 883 983 983 983 083 183 283 383 383 383 483 683 783 893 093 193 293 393 393 393 393 393 593 693 804 904 004 104 204 304 404 504 604 704 914 014 114 314 414 614 714 714 824 924 024 224 224 324 424 424 524 624 724 834 034 134 234 334 434 434 434 434 434 944 844 944 734 944 944 044 144 244 444 444 444 444 444 444 444 444 544 444 644 744 744 744 744 844 954 054 154 254 354 554 654 754 864 964 064 264 364 464 664 664 764 874 874 074 174 374 474 574 674 774 884 984 084 184 284 384 484 484 584 784 684 884 894 784 894 994 094 194 294 294 294 294 494 494 594 694 794 8 9.
scidmaSend 示例完成、发送1890个字符
CPU 空闲计数:4313373
SCI 传输时间@ 115200bps 81NN
((1890字节)*每字节10位)/115200:0.164
单个缓冲数据是正确的、但在多个缓冲区中、数据被损坏为什么? 所有配置都是根据注释中给出的指令完成的。
此外,我注意到 ,在 scidmaSend()函数中,如果 (((scilinREG->GCR1 >> 10U)& 1U)=0U,则会进行条件检查,检查我们是否启用了多缓冲区。 我想、如果我们还通过设置 GCR1寄存器的10位来启用多缓冲模式、则该条件将为 false、因为它会将其检查为0而不是1。
请帮我解决我在此处附加项目和代码的代码有什么问题