| Products > Test Equipment |
| DIY scan card for Keysight 34970A |
| << < (9/13) > >> |
| voltsandjolts:
The 34970A service guide has some theory of operation explanation for the 34901A. It says the FRAM "provides data storage of the calibration constants for the analog output channels" which means the CJ temperature measurement. There is a calibration procedure for those also. But if the cal is in the FRAM, and I don't see it transferred to the DMM, it must be applied by the 8052 mcu. But then the scale for the CJ temperature values transferred to the meter doesn't make much sense either. I think I'll park this CJ stuff for now and just focus on relay channel stuff. |
| voltsandjolts:
--- Quote from: H.O on June 05, 2022, 05:20:46 pm --- --- Quote --- --- Code: ---#define CMD_QUERY_BUSY (0x08 >> 3) // response is either 0x100,0x101,0x120 (all busy in some way) or 0x121 (idle) --- End code --- --- End quote --- Hmmm...my impression is that 0x101, like 0x121, means confirmed/done/ready/idle - not busy. --- End quote --- Ah, yeh, your right. After the open all command 1E1 0FF, status returns 0x100...0x120....0x121 Close ch1 and status returns 0x100...0x101 (where ... means lots of repeats) |
| voltsandjolts:
OK, I think I have enough understanding to carry on and make something kinda functional. Did I miss any commands? --- Code: ---// Commands are shifted down 3 bits to remove the address bits and thus // allow the compiler to make a jump table with 32 entries for command decoding. #define CMD_IDENTIFY (0x18 >> 3) // response is 0x101-0x108 for 34901A-34908A cards respectively #define CMD_SRQ_CLEAR (0x20 >> 3) // card holds SRQ low after power on, this cmd de-asserts it then responds with 0x121 #define CMD_POWEROFF (0x40 >> 3) // seen 200ms before power off, address bits all zero i.e. 0x140 (broadcast addr?), no response required #define CMD_UNKNOWN (0xB8 >> 3) // 0x1B0 000 000 000 010 seen at power on, excercising (?) and opening relays, takes about 1.8sec #define CMD_POWERON (0xC0 >> 3) // seen at power on, no response required #define CMD_QUERY_BUSY (0x08 >> 3) // response for close cmd is 0x100...0x101 (idle), and for open cmd 0x100...0x120...0x121 (idle) #define CMD_QUERY_DATA (0x48 >> 3) // read data from the transmit buffer, byte at a time, last byte available has 9th bit set #define CMD_REFJUNC (0xC8 >> 3) // get reference junction temperatures (read from DS75 i2c temperature sensors) #define CMD_EXECUTE (0x68 >> 3) // begin read of firmware version, relay cycle counts and unknown (0x169, 0x030, 0x000/0x001) #define CMD_CHAN_OPEN (0xE0 >> 3) // open a channel, or 1E1 0FF to "open all relays" for channels and measurement bus #define CMD_CHAN_CLOSE1 (0xD8 >> 3) // scan mode, open all channels then close one channel relay and measure bus relays #define CMD_CHAN_CLOSE (0xE8 >> 3) // non-scan mode, allow multiple closed channels // The open and close commands are two characters long, the second specifies the channel: // 0x40-0x49 for channels 1 to 10 // 0x80-0x89 for channels 11 to 20 // 0x15-0x16 for channels 21 to 22 (current measurement only) // 0xC0-0xC9 for channels 1 to 10 in 4W resistance mode (paired with channels 11-20) // Additionally, the open command with "channel" 0xff means open all relays --- End code --- |
| strawberry:
08A 40ch card |
| voltsandjolts:
I'm gonna focus on my 20 channel card, since I have a 34901A 20ch to study. I don't have a 34908A 40ch card, donations welcome! |
| Navigation |
| Message Index |
| Next page |
| Previous page |