STM32常用通信——USART,IIC,SPI,CAN

STM32常用通信
CAN通信
CAN根据两根线上电位差来判断总线电平,总线电平分为显性电平和隐形电平,两者必居其一,发送方通过控制总线电平发送信息给接收方。
显性电平对应逻辑0,两根线压差2.5V左右,隐形电平对应逻辑1,压差为0。总线上可以挂很多单元,显性电平具有优先权,一个单元
显性电平,则总线为显性。CAN总线起止断有120R的电阻,用于做阻抗匹配,减少回波反射。

CAN的位时序:
<同步段SS>SS
<传播时间段PTS
相位缓冲段1   PBS1>BS1
<相位缓冲段2   PBS2>BS2
1位分为四段,每段由若干Tq组成,
波特率=1/(Tq+TBS1+TBS2)
TBS1=Tq*(TS1[3:0]+1)
TBS2=Tq*(TS2[2:0]+1)
Tq=(BRP[9:0]+1)*TCLK
TCLK=APB时钟周期
过滤器:
互联型28个过滤器,增强型14个过滤器(ag:F103ZET6);
每个过滤器由两个32位寄存器CAN_FxR1和CAN_FxR2组成。
期望收到的值:CAN_FxR1,必须关心的ID:CAN_FxR2;
控制寄存器:
CAN_MCR,INRQ位置1初始化,置零进入正常工作模式。
CAN_BTR,用于设置分频系数BRP,TS1,TS2,决定CAN波特率
发送流程:
选择空置邮箱,设置标识符ID,数据长度和发送数据,请求发送,挂号(等待成为最高优先级),等待总线空闲,发送,空置邮箱
接收流程:
FIFO空,接受有效报文,挂号1(读出,释放邮箱),挂号2(读出,释放邮箱).......满溢出,丢失信息。

SPI


四线通信,MOSI,MISO,CS,SCLK,串行通信,通过移位寄存器进行操作,所以读的时候,需要发送空子节,引起主机发送,如果是
写,则不需要考虑接收。
SPI主模块和与之通信的外设备时钟相位和极性应该一致。
32配置省略......
模拟SPI:
void Write_date ()//SPI写模拟CPHA=1,CPOL=1操作的伪代码
{
    片选CS置零选中;
 for(i=0;i<8;i++)//八位
 {    
  时钟脚置为零;
  if(dat&0x80)
     发送1;
  else
     发送0;
  时钟置高;
  dat<<=1;//先发高位 
 }
    片选CS置高取消选中; 
}
IIC
IIC为串行总线,三种类型信号
开始信号SCL为高电平时,SDA出现下降沿
结束信号SCL为高电平时,SDA出现上升沿
应答信号:[ 单片机等主机在发送一个字节的数据之后会释放scl,等待sda被从机拉低作为应答信号]。接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据CPU 向受控单元发出一个信号后,
等待受控单元发出一个应答信号, CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
数据传输:
SCL高电平时,SDA数据写入所以要变化SDA值,需要在SCL低电平时,否则会被错误认为是开始或者结束信号

USART
通过定时器产生,确定波特率,一般8位,起始,停止各一位,无奇偶校验位,串行通信,RX,TX
不仔细详谈了
 
 
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值