I am using a Beaglebone Black and C to read analog inputs with PRU0 and 
return the data to a host program using RPMSG.

Basically, I read the data from FIFO0 fine, strip the step id from it and 
copy it into an element of a character array in the PRU code.  

<start of snippet of PRU code>

Data = HWREG(SOC_ADC_TSC_0_REGS + TSC_ADC_SS_FIFODATA(0));
        
if ((Data & 0x000F0000) == 0)  {  // checking the step id tag for step 0
// if step == 0, strip off the step and put the data in array DetBSample
DetBSample[sampleno] = Data & 0xFFF;

memcpy(payload, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 24); // 
this came from TI's sample code, best I can tell it just preloads and end 
of string character in the whole string.
ltoa((long)DetBSample[sampleno], payload);  // put the value in  
DetBSample[sampleno] in the character string payload
// now send the payload to the host
pru_rpmsg_send(&transport, dst, src, payload, 24);   

This code compiles and runs fine.

On the host side, I do this when I'm kicked by the PRU.  (This is a snippet 
so brackets may not match!)

/* Poll until we receive a message from the PRU and then print it */
result = read(pollfds[0].fd, readBuf, MAX_BUFFER_SIZE);
           if (result > 0)
                {
               Volts = atof(readBuf)*ADC_Res;
                printf("Message %d received from PRU:%s or %x\n", i, 
readBuf, readBuf);
                printf("Volts read: %.3f\n",Volts);

The output is strange though (snippet below).   The message #, string value 
of readBuf and Volts are all correct. But when I output readBug as hex, it 
never changes.  I thought it might be the address of readBuf but it doesn't 
appear to be.  

The voltage matches the input we're providing from a bench power supply and 
the decimal value is correct.  It's just that this hex value doesn't change.

Message 97 received from PRU:3742 or 4b50b0
Volts read: 1.644
Message 98: Sent to PRU
Message 98 received from PRU:3744 or 4b50b0
Volts read: 1.645
Message 99: Sent to PRU
Message 99 received from PRU:3743 or 4b50b0
Volts read: 1.645
Received 100 messages, closing /dev/rpmsg_pru30


-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/784129ee-1cf5-4438-881e-7ac6621e7aben%40googlegroups.com.

Reply via email to