本文整理汇总了C++中i2c_send函数的典型用法代码示例。如果您正苦于以下问题:C++ i2c_send函数的具体用法?C++ i2c_send怎么用?C++ i2c_send使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了i2c_send函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: send_and_receive
static void send_and_receive(void)
{
uint8_t cmd[3];
uint8_t resp[2];
cmd[0] = TMP105_REG_TEMPERATURE;
i2c_send(i2c, addr, cmd, 1);
i2c_recv(i2c, addr, resp, 2);
g_assert_cmpuint(((uint16_t)resp[0] << 8) | resp[1], ==, 0);
cmd[0] = TMP105_REG_CONFIG;
cmd[1] = 0x0; /* matches the reset value */
i2c_send(i2c, addr, cmd, 2);
i2c_recv(i2c, addr, resp, 1);
g_assert_cmphex(resp[0], ==, cmd[1]);
cmd[0] = TMP105_REG_T_LOW;
cmd[1] = 0x12;
cmd[2] = 0x34;
i2c_send(i2c, addr, cmd, 3);
i2c_recv(i2c, addr, resp, 2);
g_assert_cmphex(resp[0], ==, cmd[1]);
g_assert_cmphex(resp[1], ==, cmd[2]);
cmd[0] = TMP105_REG_T_HIGH;
cmd[1] = 0x42;
cmd[2] = 0x31;
i2c_send(i2c, addr, cmd, 3);
i2c_recv(i2c, addr, resp, 2);
g_assert_cmphex(resp[0], ==, cmd[1]);
g_assert_cmphex(resp[1], ==, cmd[2]);
}
示例2: smbus_write_byte
void smbus_write_byte(i2c_bus *bus, int addr, uint8_t command, uint8_t data)
{
i2c_start_transfer(bus, addr, 0);
i2c_send(bus, command);
i2c_send(bus, data);
i2c_end_transfer(bus);
}
示例3: RTC_WRITE
/*
* TODO!
*/
void RTC_WRITE(unsigned char WordAdr, unsigned char Data) {
i2c_start(); // START condition
i2c_send(RTC_ADR_W); // Send a PCF8583 address to write
i2c_send(WordAdr); // Send on bus Word Address
i2c_send(Data); // Send on bus Data
i2c_stop(); // STOP condition
}
示例4: eeprom_save
int eeprom_save(void)
{
printf("Saving EEPROM data by 16 bytes pages...\n");
// load eeprom by pages of 32 bytes each
int counter = 0;
for (int i = 0; i < CONFIG_EEPROM_SIZE / 16; i++) {
// set address
i2c_start(I2C_Direction_Transmitter, CONFIG_EEPROM_ADDRESS);
i2c_send(counter >> 8);
i2c_send(counter & 0xFF);
// write data
for (int j = 0; j < 16; j++) {
i2c_send(eeprom_map[counter++]);
}
I2C_GenerateSTOP(I2C1, ENABLE);
while (!(I2C1->SR1 & I2C_SR1_BTF)) {
uint8_t data = I2C1->DR;
data++;
}
// wait for EEPROM to catch bytes
delay_ms(20);
early_putc('*');
}
printf("\nDone.\n");
return 0;
}
示例5: i2c_master_read_b
/*! \brief i2c master read byte.
* Read a byte from the slave with a stop at the end.
* \param addr address of the slave.
* \param byte pre-allocated byte.
* \return 1 - value OK, 0 - Error.
*/
uint8_t i2c_master_read_b(const uint8_t addr, uint8_t *byte,
const uint8_t stop)
{
uint8_t err;
err = i2c_send(START, 0);
if ((err == TW_START) || (err == TW_REP_START))
err = i2c_send(SLA, addr | READ);
/* send an ACK to start the TX */
if (err == TW_MR_SLA_ACK)
err = i2c_send(ACK, 0);
if (err == TW_MR_DATA_ACK) {
*byte = TWDR;
err = i2c_send(NACK, 0);
}
if (err == TW_MR_DATA_NACK)
err = 0;
if (stop)
i2c_send(STOP, 0);
return(err);
}
示例6: smbus_write_word
void smbus_write_word(i2c_bus *bus, int addr, uint8_t command, uint16_t data)
{
i2c_start_transfer(bus, addr, 0);
i2c_send(bus, command);
i2c_send(bus, data & 0xff);
i2c_send(bus, data >> 8);
i2c_end_transfer(bus);
}
示例7: RTC_READ
/*
* TODO!
*/
unsigned char RTC_READ(unsigned char WordAdr) {
unsigned char byte;
i2c_start(); // START condition
i2c_send(RTC_ADR_W); // Send a PCF8583 address to write
i2c_send(WordAdr); // Send on bus Word Address
i2c_start(); // START condition
i2c_send(RTC_ADR_R); // Send a PCF8583 address to read
byte = i2c_take(); // Read the byte from I2C-bus
i2c_stop(); // STOP condition
return(byte); // Results
}
示例8: main
int main(void)
{
uart_init();
i2c_init();
i2c_start(0x74);
i2c_send(0x00);
i2c_send(0x25);
i2c_send(0x06);
i2c_send(0x24);
i2c_send(0x0F);
i2c_stop();
uart_getchar();
i2c_start(0x74);
i2c_send(0x40);
i2c_send(0xC1);
i2c_send(0xC2);
i2c_stop();
while(1 > 0) {
}
return 0;
}
示例9: smbus_write_block
void smbus_write_block(i2c_bus *bus, int addr, uint8_t command, uint8_t *data,
int len)
{
int i;
if (len > 32)
len = 32;
i2c_start_transfer(bus, addr, 0);
i2c_send(bus, command);
i2c_send(bus, len);
for (i = 0; i < len; i++)
i2c_send(bus, data[i]);
i2c_end_transfer(bus);
}
示例10: application_function_i2c_write
irom static app_action_t application_function_i2c_write(application_parameters_t ap)
{
uint16_t src_current, dst_current;
i2c_error_t error;
uint8_t bytes[32];
for(src_current = 1, dst_current = 0;
(src_current < ap.nargs) && (dst_current < sizeof(bytes));
src_current++, dst_current++)
{
bytes[dst_current] = (uint8_t)strtoul((*ap.args)[src_current], 0, 16);
}
if((error = i2c_send(i2c_address, dst_current, bytes)) != i2c_error_ok)
{
i2c_error_format_string("i2c-write", error, ap.size, ap.dst);
strlcat(ap.dst, "\n", ap.size);
i2c_reset();
return(app_action_error);
}
snprintf(ap.dst, ap.size, "i2c_write: written %u bytes to %02x\n", dst_current, i2c_address);
return(app_action_normal);
}
示例11: eps_slave_hk2
int eps_slave_hk2(struct command_context *ctx) {
printf("Requesting EPS HK2 data\r\n");
eps_hk_t * chkparam;
i2c_frame_t * frame;
frame = csp_buffer_get(I2C_MTU);
frame->dest = slave_node;
frame->data[0] = EPS_PORT_HK;
frame->data[1] = 0;
frame->len = 2;
frame->len_rx = 2 + (uint8_t) sizeof(eps_hk_t);
frame->retries = 0;
if (i2c_send(0, frame, 0) != E_NO_ERR) {
csp_buffer_free(frame);
return CMD_ERROR_NOMEM;
}
if (i2c_receive(0, &frame, 20) != E_NO_ERR)
return CMD_ERROR_FAIL;
chkparam = (eps_hk_t *)&frame->data[2];
eps_hk_unpack(chkparam);
eps_hk_print(chkparam);
csp_buffer_free(frame);
return CMD_ERROR_NONE;
}
示例12: eps_slave_ping
int eps_slave_ping(struct command_context *ctx) {
i2c_frame_t * frame;
frame = csp_buffer_get(I2C_MTU);
frame->dest = slave_node;
frame->data[0] = CSP_PING; // Ping port
frame->data[1] = 0x55;
frame->len = 2;
frame->len_rx = 3;
frame->retries = 0;
if (i2c_send(0, frame, 0) != E_NO_ERR) {
csp_buffer_free(frame);
return CMD_ERROR_NOMEM;
}
if (i2c_receive(0, &frame, 20) == E_NO_ERR) {
printf("Received a reply from EPS!\r\n");
} else {
printf("No reply from EPS\r\n");
}
csp_buffer_free(frame);
return CMD_ERROR_NONE;
}
示例13: read_register
irom static io_error_t read_register(string_t *error_message, int address, int reg, int *value)
{
uint8_t i2cbuffer[2];
i2c_error_t error;
i2cbuffer[0] = reg;
if((error = i2c_send(address, 1, &i2cbuffer[0])) != i2c_error_ok)
{
if(error_message)
i2c_error_format_string(error_message, error);
return(io_error);
}
if((error = i2c_receive(address, 1, &i2cbuffer[1])) != i2c_error_ok)
{
if(error_message)
i2c_error_format_string(error_message, error);
return(io_error);
}
*value = i2cbuffer[1];
return(io_ok);
}
示例14: eps_slave_volt
int eps_slave_volt(struct command_context *ctx) {
char * args = command_args(ctx);
unsigned int pv1, pv2, pv3;
if (sscanf(args, "%u %u %u", &pv1, &pv2, &pv3) != 3)
return CMD_ERROR_SYNTAX;
printf("PV1: %04d PV2: %04d PV3: %04d\r\n", pv1, pv2, pv3);
uint16_t pvolt[3];
pvolt[0] = csp_hton16(pv1);
pvolt[1] = csp_hton16(pv2);
pvolt[2] = csp_hton16(pv3);
i2c_frame_t * frame;
frame = csp_buffer_get(I2C_MTU);
frame->dest = slave_node;
frame->data[0] = EPS_PORT_SET_VBOOST; // Ping port
memcpy(&frame->data[1], &pvolt, 3 * sizeof(uint16_t));
frame->len = 1 + 3 * sizeof(uint16_t);
frame->len_rx = 0;
frame->retries = 0;
if (i2c_send(0, frame, 0) != E_NO_ERR) {
csp_buffer_free(frame);
return CMD_ERROR_NOMEM;
}
return CMD_ERROR_NONE;
}
示例15: eps_slave_ppt_mode
int eps_slave_ppt_mode(struct command_context *ctx) {
char * args = command_args(ctx);
unsigned int mode;
printf("EPS_PPT_MODE_OFF = 0, EPS_PPT_MODE_AUTO = 1, EPS_PPT_MODE_FIXED= 2\r\n");
if (sscanf(args, "%d", &mode) != 1)
return CMD_ERROR_SYNTAX;
printf("Mode %d\r\n", mode);
i2c_frame_t * frame;
frame = csp_buffer_get(I2C_MTU);
frame->dest = slave_node;
frame->data[0] = EPS_PORT_SET_PPTMODE; // Ping port
frame->data[1] = (uint8_t)mode;
frame->len = 2;
frame->len_rx = 0;
frame->retries = 0;
if (i2c_send(0, frame, 0) != E_NO_ERR) {
csp_buffer_free(frame);
return CMD_ERROR_NOMEM;
}
return CMD_ERROR_NONE;
}