dsp28335调试sci,can是什么意思

dsp28335调试sci,can是什么意思,第1张

以下是程序:

#include "DSP2833x_Deviceh" // DSP2833x Headerfile Include File

#include "DSP2833x_Examplesh" // DSP2833x Examples Include File

unsigned int Scib_VarRx[100];

unsigned int i;

unsigned int Send_Flag;

unsigned int RX_Flag;

unsigned int TX_Flag;

#define InitDIR() \

EALLOW; \

GpioCtrlRegsGPBPUDbitGPIO49 = 0; \

GpioCtrlRegsGPBDIRbitGPIO49 = 1; \

GpioDataRegsGPBCLEARbitGPIO49 = 1; \

EDIS;

#define RX_EN GpioDataRegsGPBCLEARbitGPIO49 = 1;;

#define TX_EN GpioDataRegsGPBSETbitGPIO49 = 1;

void InitScib(void){

ScibRegsSCICTL1bitSWRESET =0;

ScibRegsSCICCRall =0x0007; // 1 stop bit, No loopback

// No parity,8 char bits,

// async mode, idle-line protocol

ScibRegsSCICTL1all =0x0003; // enable TX, RX, internal SCICLK,

// Disable RX ERR, SLEEP, TXWAKE

#if (CPU_FRQ_150MHZ)

ScibRegsSCIHBAUD =0x0001; // 9600 baud @LSPCLK = 375MHz

ScibRegsSCILBAUD =0x00E7;

#endif

#if (CPU_FRQ_100MHZ)

ScibRegsSCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz

ScibRegsSCILBAUD =0x0044;

#endif

ScibRegsSCICTL1all =0x0023; // Relinquish SCI from Reset

}

int ScibTx_Ready(void){

unsigned int i;

TX_Flag = ScibRegsSCICTL2bitTXRDY;

if(ScibRegsSCICTL2bitTXRDY == 1)

i = 1;

else

i = 0;

return(i);

}

int ScibRx_Ready(void){

unsigned int i;

RX_Flag = ScibRegsSCIRXSTbitRXRDY;

if(ScibRegsSCIRXSTbitRXRDY == 1)

i = 1;

else

i = 0;

return(i);

}

void main(void){

InitSysCtrl();

DINT;

IER = 0x0000;

IFR = 0x0000;

InitPieCtrl();

InitPieVectTable();

InitScibGpio();

InitDIR();

InitScib();

for(i = 0; i < 100; i++)

Scib_VarRx[i] = 0;

i = 0;

Send_Flag = 0;

for(;;){

if(ScibRx_Ready() == 1){

Scib_VarRx[i] = ScibRegsSCIRXBUFall;

Send_Flag = 1;

}

if((ScibTx_Ready() == 1) && (Send_Flag == 1)){

TX_EN;

ScibRegsSCITXBUF = Scib_VarRx[i];

RX_EN;

Send_Flag = 0;

i++;

if(i >= 100)

i = 0;

}

}

}

1、#ip link set canX down //关闭can设备

2、#ip link set canX up //开启can设备;

3、#ip -details link show canX //显示can设备详细信息;

4、#candump canX //接收can总线发来的数据

5、#ifconfig canX down //关闭can设备,以便配置;

6、#ip link set canX up type can bitrate 250000 //设置can波特率

7、#conconfig canX bitrate + 波特率;

8、#canconfig canX start //启动can设备;

9、#canconfig canX ctrlmode loopback on //回环测试;

10、#canconfig canX restart // 重启can设备;

11、#canconfig canX stop //停止can设备;

12、#canecho canX //查看can设备总线状态;

13、#cansend canX --identifier=ID+数据 //发送数据;

14、#candump canX --filter=ID:mask//使用滤波器接收ID匹配的数据

查错思路:

用回环模式测试收发功能是否正常

若正常,那就是另一台CAN节点有问题

注意,两台对接的节点都必须在正常模式下,才能发送成功,若其中一台不是正常模式,那另一台正常模式的节点是无法发送成功的

若不正常,那就是你的初始化程序有问题

STM32的CAN调试思路,应该是在回环模式下先调通一台,能正常接收自己发送的数据后,再在正常模式下接至少2个节点测试(且两个节点都必须是正常模式)

必须注意,CAN总线硬件有问题时可能初始化失败(比如CAN收发芯片坏了)

无法启动设备可做一下检查:

(1)确认CANTEST软件是否为最新版本,可在广州致远电子的网站上下载最新的软件安装包。

(2)确认驱动是否已正常安装,可观察设备上的“sys灯”的颜色,绿色表示已正常安装驱动,红色表示无安装好驱动,驱动文件可在致远网站上找到。

(3)更换电脑和USB线缆再做测试,若依旧存在问题,则可考虑将设备寄回厂家返修检测了。

在Python编程语言中,以下是能够引起"can中断里打断点异常"这一问题的一些原因和可能的解决方法:

原因:

1代码中存在语法错误或逻辑错误。

2代码中某些部分运行速度过慢或者出现死循环,导致内存占用过大,从而导致程序崩溃。

3代码出现溢出或栈溢出等异常。

解决方法:

1首先需要检查代码中是否存在语法或逻辑错误,应该逐条排查代码并进行调试和测试。同时,我们可以使用Python的调试工具,例如pdb或ipdb,在打断点的时候会详细展示异常信息,帮助我们更加准确定位问题。

2检查代码运行的速度和内存占用情况,特别是在对大数据集进行处理,或大规模循环嵌套和占用大量内存的情况下,应该注重运用优化和算法优化来减轻程序的资源占用,尽量避免程序崩溃。

3当程序发生溢出或栈溢出等异常时,应该检查代码中的类型和函数使用方式是否正确,并提高代码健壮性,避免这种异常的发生。比如可以使用try-except语句来捕获异常,避免程序直接崩溃。

必须要。

CAN总线也叫控制器局域网,是一种主要应用在汽车控制和工业控制上的工业现场总线类型,它的数据传输速度比较快,一般的工业总线可远远达不到这个水平,所以必须要can盒。

我用的USBCAN-E(2E)-U,比较简单,

1、找到该产品品的驱动。

2、到电脑的设备管理器右击 “未知设备”,点击“更新驱动”;

3、到驱动向导里,先点击“浏览计算机以查找驱动程序软件”;

4、点击右下方的“从磁盘安装”;

5、定位到驱动文件夹中的INF文件(路径),点击确定,下一步,即可安装。

以上就是关于dsp28335调试sci,can是什么意思全部的内容,包括:dsp28335调试sci,can是什么意思、linux can *** 作命令、stm32 can可以接收数据,但却无法发送数据,怎么回事等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10133526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存