SSP_RF状态机的主要功能是
1. 接收Frame
2. 检查接收到的Frame是否有error,接收或者丢弃
3. 确定是否要发ACK或者NAK
4. 向PL_PM发送接收到帧的确认回执;
交互的状态机有:
PL_PM SSP_RCM SSP_RIM SSP_TAN
SSP_TAN (transmit ACK/NAK control) state machine
这个状态机主要功能是,在收到了帧收到的消息之后,确定传送ACK或者NAK;
以及在帧比较多的时候,保证ACK和NAK的顺序的正确性;
SSP_RIM (receive interlocked frame monitor) state machine
主要功能是统计frame和ACK/NAK的数目是否一致,逻辑比较简单;
有两个计数器
1. frame
2. ACK/NAK
一小段代码简单概括一下
unsigned long long frame_cnt = 0;
unsigned long long ack_nak_cnt = 0;
while(1){
if(frame_received)//来自 SSP_RF
frame_cnt++;
if(ack_nak_transmitted)//来自 SSP_TAN
ack_nak_cnt++;
if(frame_cnt == ack_nak_cnt)
//send an Rx Balance Status (Balanced) message to SSP_RF
else
//send an Rx Balance Status (Not Balanced) message to SSP_RF
if("Enable Disable SSP (Enable)" || "request close" || "request break")
frame_cnt = 0;
ack_nak_cnt = 0;
}