For payload lengths greater than 3 bytes the very last byte in a frame is a checksum byte. It is calculated by summing all the bytes in the payload plus the seed given in "Table: Command Overview". The lowest eight bits of this sum are send as the checksum:
CRC = (SUM(payload)+seed)%256
The following data is not send from the D700 to SB800:
The flash does not send any data at all if it is in the mode "CLS-Remote"
Notes: Der SB900 is able to detect color filter and sends this data to the cam for white balance adjustment
Note to self: set flash to af-ill only (not to fire a flash) => Status bits??
This protocol is pretty weird: It is frame based, but the header of the frame does not show how many bytes are to be transferred. You have ho implement a lookup table for this. Although the communication is initiated by the camera the flash provides the clock for the synchronous data transmission. The clock frequency and the whole timing is agonizingly slow. So slow that during normal operations the bus is busy for about 80% of the time. In case you want to implement this protocol you will find that you will have to sacrifice about the full processing power for the transmission of just a few bytes. But anyway Nikon managed to successfully implement it. Hats off!
Data captured by my logic analyzer. The software to view the data is free for download and available at http://www.saleae.com/downloads/
1.) wake_camera Sample communication: Wake up camera by half-pressing the shutter button; Initialization of the flash. D700 and SB800, 24mm lens, mode P, 1/30, f5.6 2.) Regular status communication: 0xA0 and 0xB0 3.) AF-ILL on and off 4.) Fire a flash: Preflash1, Preflash2, Flashpower, X-Sync, Postflash
Here you find the Nikon SB800 Repair manual
文章评论(0条评论)
登录后参与讨论