This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
使用280025C做一个产品,需要三个串口。SCI已被占用,所以将两个LIN配置为SCI使用。
由于LIN/SCI的多缓冲模式只有8级,又不够用,所以需要用LIN/SCI启动DMA进行传输。
采用C2000Ware_3_03_00_00中的示例 lin_ex3_sci_dma 进行修改。
该示例中是采用多缓冲模式的,需要修改为禁用多缓冲模式,但此时出错了。
原示例在我们自己做的板子上正常运行,但是,改为禁用多缓冲模式后,SCI不能启动DMA。
不知类似的问题有没有遇到过的,请各位高手各位大侠帮帮忙!
另外,发现TI手册中有错误,也害我不浅,分享一下,免得用这个芯片的人也走弯路。
在SPRUIN7中给出的LIN 寄存器地址是这样的:
而 driverlib 中定义的地址是这样的:
仔细一看,整整差了一倍!!!
发现此问题后,赶紧TI网站上找勘误表,没有找到!
请TI的大师们给个解释哈
我的程序95%是汇编写的,所以我需要从手册上得到寄存器的地址,按说明书编程后,什么动静都没有。。。
因此,才找到示例对比。发现地址问题后,LIN/SCI可以正常工作了,但是我编的程序不能启动DMA
便又运行示例,修改示例,才发现禁止多缓冲模式时,DMA不启动
不知是我哪里搞错了
求指点
您好,感谢您的回复!
Lin_ex3_sci_dma 例程修改如下:
1.主程序定义:
2.DMA初始化函数 initDMA() 修改
3.Lin/sci 配置函数 configureSCIMode(void) 修改
4.运行结果:
5.观察LIN 的SCITD 和 SCIRD ,数据是一样的,都是 7FH,所以说,LIN/SCI工作是正常的。而DMACH6 的目标地址和源地址都没有激活,说明DMACH6
没有接收到RX_DMA 信号。
6.观察LIN的SCISETINT 中的 SET_RX_DMA 和 SET_TX_DMA ,都为0.这部分没有修改,使用原版的示例程序也是一样
7.附上原版示例程序运行的结果:
谢谢!