A Message Board, Guestbook, or Poll hosted for your website.
4D SYSTEMS FORUM

Register Login New Posts Chat
4D Systems > Forums > uCAM-232 > FPGA uCAM communication
 
Username:
Password:
 

Thread Tools  | Search This Thread 
Reply
 
Author Comment
 
MooMFMoo
Registered: 05/10/09
Posts: 3

    05/10/09 at 10:17 PM
Reply with quote#1

Hi,

anyone attempted to use a FPGA development board to grab frames from the uCAM?
I'm having troubles getting the uCAM to acknowledge the commands sent to it from the FPGA.
I know thats the board is transmitting the correct commans in hex because I've tested it by connecting it to the computer and used Matlab to act as the uCAM.

The development board I am using is the "LiveDesign Evaluation Board" with the Spartan 3 XC3S1000-4FG456 chip.

So what I've been trying to do is actually sync the camera with AA 0E 00 00 00 00h.
Either the uCAM doesn't recognise the command or the board is transmitting gibberish which should'nt be the the case because I've used Matlab to obtain an image.

Anyone know if its a serial communications protocol problem? or if its uCAM problem?

Thanks.

meldavia
Moderator
Registered: 18/03/07
Posts: 268

    05/10/09 at 11:54 PM
Reply with quote#2

In order to initialize the cam, you must send the SYNC sequence 
   0xAA, 0x0D, 0x00, 0x00, 0x00, 0x00
up to 60 times. Once the cam is initialized, you will receive the sync ack
   0xAA, 0x0E, 0x0D, 0x00, 0x00, 0x00

here is part of a 4DGL code example that may help.

#DATA
    byte sync           0xAA, 0x0D, 0x00, 0x00, 0x00, 0x00
    byte ack            0xAA, 0x0E, 0x0D, 0x00, 0x00, 0x00
#END


func main()
    var retry;
    retry := 60;
    while(--retry)
        if (command(sync, ack, 3)) break; // send sync, expect ack, timeout = 3 msec
    wend
// cam is now initialized if retry is non zero
endfunc

Notice with all the cam commands, the ACK packet returned has 0Eh as the second byte, and the second byte that was sent becomes the third byte received. This makes it fairly easy to re-organize the packet sent into a template for the expected ACK.
Here is some other useful commands and the expected ACK' s

    byte take_snap      0xAA, 0x05, 0x01, 0x00, 0x00, 0x00  // uncompressed snapshot
    byte take_snap_ack  0xAA, 0x0E, 0x05, 0x00, 0x00, 0x00
   
    byte get_pic        0xAA, 0x04, 0x01, 0x00, 0x00, 0x00  // Snapshot pic
    byte get_pic_ack    0xAA, 0x0E, 0x04, 0x00, 0x00, 0x00

    byte sync           0xAA, 0x0D, 0x00, 0x00, 0x00, 0x00
    byte ack            0xAA, 0x0E, 0x0D, 0x00, 0x00, 0x00
   
    //Baud rate = 14.7456MHz / 2 x (2nd Divider + 1) / 2 x (1st Divider + 1)
    byte set614kb       0xAA, 0x07, 0x02, 0x01, 0x00, 0x00
    byte set115kb       0xAA, 0x07, 0x0F, 0x01, 0x00, 0x00
    byte get_baud_ack   0xAA, 0x0E, 0x07, 0x00, 0x00, 0x00

    // init for different sizes
    word displayMode    init80x60,init128x96,init128x128,init160x120
    byte init80x60      0xAA, 0x01, 0x00, 0x06, 0x01, 0x00, 80,  60   // 16 bit raw, 80x60
    byte init128x96     0xAA, 0x01, 0x00, 0x06, 0x0B, 0x00, 128, 96   // 16 bit raw, 128x96
    byte init128x128    0xAA, 0x01, 0x00, 0x06, 0x09, 0x00, 128, 128  // 16 bit raw, 128x128
    byte init160x120    0xAA, 0x01, 0x00, 0x06, 0x03, 0x00, 160, 120  // 16 bit raw, 160x120
    byte init_ack        0xAA, 0x0E, 0x01, 0x00, 0x00, 0x00









__________________
Regards,
Dave
MooMFMoo
Registered: 05/10/09
Posts: 3

    06/10/09 at 12:10 AM
Reply with quote#3

Thanks for the quick response.

Yeah I've done pretty much the same thing. In Matlab it occasionally takes 2~3 Minz to pick it up and sync but at least once it is in sync i can communicate with it.

In my code for the FPGA, I've also pretty much done the same thing as well. But no matter how long I left it to keep trying, the uCAM never picks up on the sync command from the board. I'm certain that the command the board is sending to uCAM is correct, uCAM seems like it just ignores the repeated messages.

I've even double checked that the board's transmission to the camera had the correct voltages.

Any other suggested problems are welcome. There maybe things that I have overlooked.

Thanks heaps.
meldavia
Moderator
Registered: 18/03/07
Posts: 268

    06/10/09 at 01:44 AM
Reply with quote#4

unless its a typo, you were saying that you were trying to sync with the sequence "AA 0E 00 00 00 00" - this may be an oversight, or it could be your problem ??

__________________
Regards,
Dave
ESPsupport
Moderator
Registered: 27/01/09
Posts: 100

    06/10/09 at 06:45 AM
Reply with quote#5

The uCam generaly responds to Sync on the first go after a power up.

If you have previously communicated with it and have 'abandoned' it in the middle of a command or command sequence, it can be very difficult to get it to respond to Sync. In this situation a 'Full' Reset will often get you control back, but not always.
MooMFMoo
Registered: 05/10/09
Posts: 3

    06/10/09 at 09:43 AM
Reply with quote#6

I double check with the guide before I send the command.

I've tried turning off the camera then powering it up again. I'm pretty sure I've also tried the full reset but I'll try that again through Matlab. Once its full reset, I'll reconnect it to the board and attampt to sync it again.

I know there area people trying to use the camera while programming PICs, but I haven't come across a user with this problem where the camera is ignoring the board/pic.
Previous Thread | Next Thread
Reply

 
Bookmarks
 
Digg Diggdel.icio.us del.icio.usStumbleUpon StumbleUponGoogle Google