A bit confused with comunication between two cyrf7936 on ARTAFLEX AW24MHL-SM

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hello everybody in this forum, my name is Raúl from Spain.

   

I'm trying to comunicate two cyrf7936 (ARTAFLEX AW24MHL-SM). One of them is configured as a sender and the other as a receiver.

   

My general situation is:

   

The comunication modules are commanded by several PIC via SPI comunication. IRQ events are monitored using a general purpose pin on the PIC. The main code polls this pin in a loop and when asserted I try to get the received message.

   

The sender sends  messages every 30 seconds, paquets have SOP, len field, 16 bytes of data, CRC and I use the transaction mode. The sender transmits each packet and waits for the ACK.

   

Receiver is listening in the same channel the senser uses. Nowadays I only detect the IRQ and read the RX_IRQ_STATUS register.

   

I've seen the following:

   

The sender starts executing and every 30 sec. it sends a packet. It prints debugg information via RS232 to the PC. It shows the SOP and the PREAMBLE for each packet.

   

Receiver starts execution listening in the same channel but doesn't see packets, several minutes later, starts to receive packets and It shows the SOP and the PREAMBLE of the packets sent in the past by the transmiter. The transmitter sends packets every 30sec.

   

I'm confused about it, Can cyrf7936 memorize several received SOP in a buffer??? it's very strange.

   

Can anybody help me??

   

Thank you very much in advance¡¡ 😉

0 Likes
1 Reply
Anonymous
Not applicable

Hello everybody,

   

I've being trying to understand the comunication  between the two cyrf7936.

   

Nowadays it seems my sender module is sending incorrect packets. Receiver detecs the SOP and next detects several errors: EOP error, and CRC error. When this occurs IRQ pin is triggered.

   

The way I get the errors is:

   

- Read bit RXE in RX_IRQ_STATUS register.

   

- If this bit is 1, next read RX_STATUS register in order to get more info about the error.

   

But the problem is that I can't deassert the IRQ pin. And the receiver enters in a infinite loop because allways see the IRQ pin asserted. The transmitter sends a packet every 30 seconds....

   

I being trying to abort the reception if a error occurs doing this:

   

- Enable the Abort by setting the bit ABORT_EN in the RX_ABORT register.

   

- force END_STATE by setting the FRC_END bit in  XACT_CFG register and next dummy reading RX_COUNT_ADR bytes in the RX_BUFFER file.

   

... but nothing deassert the IRQ pin.

   

¿Do anybody know the cyrf7936 module? ¿Is there anyway to get customer service from cypress?

   

Thany you in advance¡

0 Likes