⑴ 那位大侠能给解释一下飞思卡尔单片机中的 SCI,不胜感激
就是串口通信模块
包括几个寄存器:波特率寄存器:SCIxBDH\SCIxBDL
控制寄存器1:SCIxC1
控制寄存器2:SCIxC2
控制寄存器3:SCIxC3
通信状态寄存器1:SCIxS1
通信状态寄存器2:SCIxS2
通信数据寄存器:SCIxD
其中x都代表序号,串口通信模块1,串口通信模块2
按照Datasheet把这几个寄存器设置一下就可以了
⑵ 飞思卡尔单片机 SCI 通信
下位机怎么算是死掉了?是程序跑飞了乱操作还是不执行了?
不执行的话是不是你的程序里有指令一直等着串口数据,如果串口数据没有来,它就死等呢?
不贴程序出来谁知道你是什么问题?
⑶ 单片机SCI的作用
你用的飞思卡尔的MCU吧,他的MCU串口叫SCI,呵呵, LIN总线在汽车电子这块用的很多,一般用于低速ECU模块设计,车身控制器BCM,像什么雨刷控制,电动车门控制啦,用的比较多。。。
⑷ 飞思卡尔16位单片机SCI串行通信里, While(!(SCI0SR1&0X80));这行什么作用啊下面是写输出寄存器的一个子
SCI0SR1的最高位为TDRE,为发送数据寄存器空标志位。当发送数据寄存器中的数据转移到了移位寄存器中时,该标志位置1,此时发送数据寄存器为空,可以接收新的数据。
While(!(SCI0SR1&0X80))即为判断SCI0SR1的最高位即TDRE位是否为1,如果为1则退出循环往数据寄存器写要发送的数据(后两行的意思)
希望对你有帮助。
⑸ 飞思卡尔mc9s12xs128单片机SCI有两组,我知道怎么选用SCI0,但是不知道怎么选用SCI1。SCI1有3组,求大神指
楼主有飞思卡尔编程软件吗?我这win7 64位不兼容啊~~~太淘气了,话说我也在用mc9s12xs256 不过我刚接触 估计帮不到楼主。。。我不敢问导师啊~~这要知道我玩知道弄shi我了。。
⑹ 飞思卡尔mc9s12xs128单片机SCI有两组,怎么选用呢
void SCI_Init(void)
{
SCI0BDH = 0X00; //Baud rate = 9600
SCI0BDL = 0X9C;
SCI0CR1 = 0X00;
SCI0CR2 = 0X2C; //启用接受中断 发送使能 接受使能
}
/**********************************************
*** SCI send data function ***
**********************************************/
void SCI_Send_Data(byte data)
{
while (!(SCI0SR1&0X80)){;} //wait TDRE置1,即等待发送
SCI0DRH = 0; //9-bit data format
SCI0DRL = data; //send data
}
/*================中断========================*/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 20 SCI_Rx(void)
{
SCI0SR1_RDRF = 1;
//SCI0_Rx_Data = SCI0DRL;
}
SCI1类似,具体寄存器查看头文件或者数据手册吧!
⑺ 飞思卡尔08 SCI发送数据时,为什么要弄一个字符串发送函数、
串口发送函数SCI_send,只发送1个字节,判断的是缓冲器是否空。
而send_string发送字符串,串中每个字符要调用一次SCI_send,并且需要判断字符串是否发送完毕。
这两个函数命名极其不规范,其一风格不统一,其二函数名没有明确函数功能及不同函数之间的区别。
此外,send_string中判断是否为0,也不太妥,单片机处理串口,有很多时候需要发送0x00这类数据,不适合用高级语言的字符串以0x00结尾这样的规则,最好以发送字节数作为发送完成依据。
⑻ 飞思卡尔单片机SCI串口通信 如何设置两个MCU之间通信的主从关系,不设置是否能通信
飞思卡尔单片机SCI是个全双工异步通讯接口,不设置主从也可以通讯,但一般用在点对点通讯;在多机系统中,考虑通讯的可靠、准确,在线路上只有发送时只有一个单片机发送,不会在总线上发生混乱,所以要定义主、从关系;一般起始发送指令的单片机,为主;其它为辅。根据你系统中的上下关系也可以定义。主发指令向从机执行,或者要求从机发送数据回,协议根据系统要求设置。
⑼ 飞思卡尔单片机SCI编程求救!!!
void SendMsg(unsigned char msg[])
函数定义的这一行,msg[]的“[]”去掉
这个错误我相信是你的笔误
函数的参数不能是数组的,只能是数组的首地址
而且,你这个明显只是想传递数组中的一个元素过去,也就是说,传递到SendMsg函数中的,只是一个unsigned char型变量而已,写个中括号做什么
⑽ 飞思卡尔MC9S12NE64VTU单片机串口SCI1串口收发问题
看了你的程序,有两个问题:
1. 你的中断程序里面有个PTG=0x40和0x00是做什么用的,从你的注释来看,是不是用来设置传输和接收状态转换的(这个有点奇怪)?
你的中断程序应该是接收数据后产生中断,然后将相同的数值发出去。这里我假设发送、接收通过PTG控制,这里我假设PTG=0就会disable发送,SCI1DRL=data;可以看作启动发送,可是还没有发送完PTG=0就会disable发送了。
可以在PTG=0前面再加判断TC看看是否发送已经完成。(这个是基于PTG控制收发的基础得到的结论,希望对你有帮助)
2. 你的断点设置在哪里,收发成功?如果在PTG=0x00还没有执行之吗?