Special Behaviour In Case Of Spacewire Link Error - Eads Astrium SMCS332SpW User Manual

Interface between three spacewire links
Table of Contents

Advertisement

Example #2:
The following two C-code routines show a handling of transferring small packets. (m: SMCS number, n: channel number)
#define TXfull
#define RXnotEmpty
#define RXrecvEOP
int smcs_fifo_read(int SMCSm,
int Chn_STAR,
int Chn_RX_FIFO,
int amount,
int *rxdpram)
{
int num;
for (num = 0; num < amount; num++)
{
while (!(smcs_reg_read(SMCSm, CHn_STAR) & RxnotEmpty))
;
*rxdpram++ = smcs_reg_read(SMCSm, CHn_RX_FIFO);
if (smcs_reg_read(SMCSm, CHn_STAR) & RXrecvEOP)
break;
}
return num;
}
void smcs_fifo_write(int SMCSm,
int Chn_TX_EOPB,
{
int num;
for (num = 0; num < amount; num++)
{
while (smcs_reg_read(SMCSm, CHn_STAR) & TXfull)
;
smcs_reg_write(SMCSm, CHn_TX_FIFO, *txdpram++);
}
smcs_reg_write(SMCSy, CHx_TX_EOPB, EOP);
}
6.3.1

Special behaviour in case of SpaceWire link error

Data written to the HOCI transmit FIFO are not transmitted immediately as already described in the previous section. This
SMCS332SpW
User Manual
0x02;
0x04;
0x60;
/* SMCS to use */
/* number of words to read */
/* pointer on receive buffer */
/* wait for data */
/* return number of words read */
/* SMCS to use */
int Chn_STAR,
int Chn_TX_FIFO,
int amount,
/* number of words to transmit */
int *txdpram)
/* pointer on transmit buffer */
/* wait for space in fifo */
/* send EOP */
– All Rights Reserved – Copyright per DIN 34 –
EADS Astrium GmbH, ASE2
Doc No: SMCS_ASTD_UM_100
Issue:
1.4
Updated: 9-Sep-2006
Page:
62 of 131

Advertisement

Table of Contents
loading

Table of Contents