doc: renamed project
This commit is contained in:
committed by
Sylvan Arnold
parent
244e516bd8
commit
32618389d1
472
pico-sensor/McuLib/src/McuI2CSpy.c
Normal file
472
pico-sensor/McuLib/src/McuI2CSpy.c
Normal file
@@ -0,0 +1,472 @@
|
||||
/* ###################################################################
|
||||
** This component module is generated by Processor Expert. Do not modify it.
|
||||
** Filename : McuI2CSpy.h
|
||||
** Project : FRDM-K64F_Generator
|
||||
** Processor : MK64FN1M0VLL12
|
||||
** Component : I2CSpy
|
||||
** Version : Component 01.017, Driver 01.00, CPU db: 3.00.000
|
||||
** Compiler : GNU C Compiler
|
||||
** Date/Time : 2020-08-13, 18:42, # CodeGen: 675
|
||||
** Abstract :
|
||||
** This component implements a utility to inspect devices on the I2C bus.
|
||||
** Settings :
|
||||
** Component name : McuI2CSpy
|
||||
** I2C : McuGenericI2C
|
||||
** Default Address : 0x0
|
||||
** Default Address Size : 1
|
||||
** Default Bytes per Line : 8
|
||||
** Shell : Enabled
|
||||
** Shell : McuShell
|
||||
** Utility : McuUtility
|
||||
** Contents :
|
||||
** SetDeviceAddress - uint8_t McuI2CSpy_SetDeviceAddress(uint8_t addr);
|
||||
** GetDeviceAddress - uint8_t McuI2CSpy_GetDeviceAddress(void);
|
||||
** SetAddressSize - uint8_t McuI2CSpy_SetAddressSize(uint8_t size);
|
||||
** SetBytesPerLine - uint8_t McuI2CSpy_SetBytesPerLine(uint8_t nofBytesPerLine);
|
||||
** ReadRegData - uint8_t McuI2CSpy_ReadRegData(uint32_t addr, uint8_t *data, size_t dataSize);
|
||||
** WriteRegData - uint8_t McuI2CSpy_WriteRegData(uint32_t addr, uint8_t *data, uint16_t dataSize);
|
||||
** ParseCommand - uint8_t McuI2CSpy_ParseCommand(const unsigned char *cmd, bool *handled, const...
|
||||
** Deinit - void McuI2CSpy_Deinit(void);
|
||||
** Init - uint8_t McuI2CSpy_Init(void);
|
||||
**
|
||||
** * Copyright (c) 2013-2020, Erich Styger
|
||||
** * Web: https://mcuoneclipse.com
|
||||
** * SourceForge: https://sourceforge.net/projects/mcuoneclipse
|
||||
** * Git: https://github.com/ErichStyger/McuOnEclipse_PEx
|
||||
** * All rights reserved.
|
||||
** *
|
||||
** * Redistribution and use in source and binary forms, with or without modification,
|
||||
** * are permitted provided that the following conditions are met:
|
||||
** *
|
||||
** * - Redistributions of source code must retain the above copyright notice, this list
|
||||
** * of conditions and the following disclaimer.
|
||||
** *
|
||||
** * - Redistributions in binary form must reproduce the above copyright notice, this
|
||||
** * list of conditions and the following disclaimer in the documentation and/or
|
||||
** * other materials provided with the distribution.
|
||||
** *
|
||||
** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
** * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
** * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
** * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
** * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
** * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
** * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
** * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
** ###################################################################*/
|
||||
/*!
|
||||
** @file McuI2CSpy.h
|
||||
** @version 01.00
|
||||
** @brief
|
||||
** This component implements a utility to inspect devices on the I2C bus.
|
||||
*/
|
||||
/*!
|
||||
** @addtogroup McuI2CSpy_module McuI2CSpy module documentation
|
||||
** @{
|
||||
*/
|
||||
|
||||
/* MODULE McuI2CSpy. */
|
||||
|
||||
#include "McuI2CSpy.h"
|
||||
|
||||
#define McuI2CSpy_DEFAULT_I2C_ADDR 0
|
||||
#define McuI2CSpy_DEFAULT_ADDR_SIZE 1
|
||||
#define McuI2CSpy_DEFAULT_BYTES_PER_LINE 8
|
||||
|
||||
typedef struct {
|
||||
uint8_t deviceAddr; /* I2C 7bit device address */
|
||||
uint8_t addrSize; /* number of address bytes, e.g. 1, 2, 3 or 4 bytes */
|
||||
uint8_t bytesPerLine; /* number of bytes per line for dump */
|
||||
} McuI2CSpy_TDataState;
|
||||
|
||||
static McuI2CSpy_TDataState McuI2CSpy_deviceData;
|
||||
|
||||
#define MAX_NOF_BYTES_PER_LINE 32 /* maximum number of bytes per line */
|
||||
|
||||
static uint8_t Read(uint32_t addr, const McuShell_StdIOType *io) {
|
||||
uint8_t val;
|
||||
uint8_t hexBuf[3];
|
||||
|
||||
if (McuI2CSpy_ReadRegData(addr, &val, 1)!=ERR_OK) {
|
||||
McuShell_SendStr((unsigned char*)"\r\n*** read failed!\r\n", io->stdErr);
|
||||
return ERR_FAILED;
|
||||
}
|
||||
McuShell_SendStr((unsigned char*)"value: 0x", io->stdOut);
|
||||
hexBuf[0] = '\0';
|
||||
McuUtility_strcatNum8Hex(hexBuf, sizeof(hexBuf), val);
|
||||
McuShell_SendStr(hexBuf, io->stdOut);
|
||||
McuShell_SendStr((unsigned char*)"\r\n", io->stdOut);
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
static uint8_t ReadData(void *hndl, uint32_t addr, uint8_t *buf, size_t bufSize) {
|
||||
(void)hndl; /* not used */
|
||||
if (McuI2CSpy_ReadRegData(addr, buf, bufSize)!=ERR_OK) {
|
||||
return ERR_FAILED;
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
static void ScanDevices(const McuShell_StdIOType *io) {
|
||||
uint8_t addr, oldAddr;
|
||||
uint8_t buf[3], res;
|
||||
|
||||
oldAddr = McuI2CSpy_GetDeviceAddress();
|
||||
for (addr=0; addr<0x7f; addr++) {
|
||||
McuShell_SendStr((unsigned char*)"scan of I2C device addr 0x", io->stdOut);
|
||||
buf[0] = '\0';
|
||||
McuUtility_strcatNum8Hex(buf, sizeof(buf), addr);
|
||||
McuShell_SendStr(buf, io->stdOut);
|
||||
if (McuI2CSpy_SetDeviceAddress(addr)!=ERR_OK) {
|
||||
McuShell_SendStr((unsigned char*)": failed selecting device\r\n", io->stdErr);
|
||||
break; /* get out of for loop */
|
||||
}
|
||||
res = McuGenericI2C_ScanDevice(addr);
|
||||
if (res==ERR_NOTAVAIL) {
|
||||
McuShell_SendStr((unsigned char*)": no ACK\r\n", io->stdErr);
|
||||
} else if (res==ERR_OK) {
|
||||
McuShell_SendStr((unsigned char*)": Device responded!\r\n", io->stdErr);
|
||||
} else {
|
||||
McuShell_SendStr((unsigned char*)": *** failed! ***\r\n", io->stdErr);
|
||||
}
|
||||
} /* for */
|
||||
(void)McuI2CSpy_SetDeviceAddress(oldAddr); /* restore old device address */
|
||||
}
|
||||
|
||||
static uint8_t PrintStatus(const McuShell_StdIOType *io) {
|
||||
unsigned char buf[3];
|
||||
|
||||
McuShell_SendStatusStr((unsigned char*)"McuI2CSpy", (unsigned char*)"\r\n", io->stdOut);
|
||||
McuShell_SendStatusStr((unsigned char*)" deviceAddr", (unsigned char*)"0x", io->stdOut);
|
||||
buf[0] = '\0';
|
||||
McuUtility_strcatNum8Hex(buf, sizeof(buf), McuI2CSpy_GetDeviceAddress());
|
||||
McuShell_SendStr(buf, io->stdOut);
|
||||
McuShell_SendStr((unsigned char*)"\r\n", io->stdOut);
|
||||
McuShell_SendStatusStr((unsigned char*)" addrSize", (unsigned char*)"", io->stdOut);
|
||||
McuShell_SendNum8u(McuI2CSpy_deviceData.addrSize, io->stdOut);
|
||||
McuShell_SendStr((unsigned char*)"\r\n", io->stdOut);
|
||||
McuShell_SendStatusStr((unsigned char*)" bytes/Line", (unsigned char*)"", io->stdOut);
|
||||
McuShell_SendNum8u(McuI2CSpy_deviceData.bytesPerLine, io->stdOut);
|
||||
McuShell_SendStr((unsigned char*)"\r\n", io->stdOut);
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
static uint8_t PrintHelp(const McuShell_StdIOType *io) {
|
||||
McuShell_SendHelpStr((unsigned char*)"McuI2CSpy", (unsigned char*)"Group of McuI2CSpy commands\r\n", io->stdOut);
|
||||
McuShell_SendHelpStr((unsigned char*)" help|status", (unsigned char*)"Print help or status information\r\n", io->stdOut);
|
||||
McuShell_SendHelpStr((unsigned char*)" bytesPerLine <number>", (unsigned char*)"Number of bytes per line for dump command (1..32)\r\n", io->stdOut);
|
||||
McuShell_SendHelpStr((unsigned char*)" scan", (unsigned char*)"Scans device addresses\r\n", io->stdOut);
|
||||
McuShell_SendHelpStr((unsigned char*)" device 0x<addr>", (unsigned char*)"Set the I2C device address\r\n", io->stdOut);
|
||||
McuShell_SendHelpStr((unsigned char*)" addrSize <size>", (unsigned char*)"Address size used for device memory map (1, 2, 3 or 4)\r\n", io->stdOut);
|
||||
McuShell_SendHelpStr((unsigned char*)" read 0x<addr>", (unsigned char*)"Read a byte from an address\r\n", io->stdOut);
|
||||
McuShell_SendHelpStr((unsigned char*)" write 0x<addr> 0x<data>", (unsigned char*)"Write a data to an address. 0x<data> can be multiple items.\r\n", io->stdOut);
|
||||
McuShell_SendHelpStr((unsigned char*)" dump 0x<start>..0x<end>", (unsigned char*)"Read data from an address range\r\n", io->stdOut);
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : ParseCommand (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Shell Command Line parser
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** * cmd - Pointer to command string
|
||||
** * handled - Pointer to variable which tells if
|
||||
** the command has been handled or not
|
||||
** io - Pointer to I/O structure
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuI2CSpy_ParseCommand(const unsigned char *cmd, bool *handled, const McuShell_StdIOType *io)
|
||||
{
|
||||
uint8_t addr8, value8;
|
||||
uint32_t addr32, end32;
|
||||
const unsigned char *p;
|
||||
uint8_t cnt;
|
||||
uint8_t buf[16];
|
||||
|
||||
if (McuUtility_strcmp((char*)cmd, McuShell_CMD_HELP)==0 || McuUtility_strcmp((char*)cmd, "McuI2CSpy help")==0) {
|
||||
*handled = TRUE;
|
||||
return PrintHelp(io);
|
||||
} else if ((McuUtility_strcmp((char*)cmd, McuShell_CMD_STATUS)==0) || (McuUtility_strcmp((char*)cmd, "McuI2CSpy status")==0)) {
|
||||
*handled = TRUE;
|
||||
return PrintStatus(io);
|
||||
} else if (McuUtility_strncmp((char*)cmd, "McuI2CSpy bytesPerLine ", sizeof("McuI2CSpy bytesPerLine ")-1)==0) {
|
||||
p = cmd+sizeof("McuI2CSpy bytesPerLine ")-1;
|
||||
if (McuUtility_ScanDecimal8uNumber(&p, &value8)==ERR_OK && value8>=1 && value8<=MAX_NOF_BYTES_PER_LINE) {
|
||||
(void)McuI2CSpy_SetBytesPerLine(value8);
|
||||
} else {
|
||||
McuShell_SendStr((unsigned char*)"**** wrong bytes per line, must be 1..32\r\n", io->stdErr);
|
||||
}
|
||||
*handled = TRUE;
|
||||
} else if (McuUtility_strncmp((char*)cmd, "McuI2CSpy device ", sizeof("McuI2CSpy device ")-1)==0) {
|
||||
p = cmd+sizeof("McuI2CSpy device ")-1;
|
||||
if (McuUtility_ScanHex8uNumber(&p, &addr8)==ERR_OK && addr8<=0x7F) {
|
||||
(void)McuI2CSpy_SetDeviceAddress(addr8);
|
||||
} else {
|
||||
McuShell_SendStr((unsigned char*)"**** wrong device address\r\n", io->stdErr);
|
||||
}
|
||||
*handled = TRUE;
|
||||
} else if (McuUtility_strncmp((char*)cmd, "McuI2CSpy read ", sizeof("McuI2CSpy read ")-1)==0) {
|
||||
p = cmd+sizeof("McuI2CSpy read ")-1;
|
||||
if (McuUtility_ScanHex32uNumber(&p, &addr32)==ERR_OK) {
|
||||
(void)Read(addr32, io);
|
||||
} else {
|
||||
McuShell_SendStr((unsigned char*)"**** wrong address\r\n", io->stdErr);
|
||||
}
|
||||
*handled = TRUE;
|
||||
} else if (McuUtility_strncmp((char*)cmd, "McuI2CSpy addrSize ", sizeof("McuI2CSpy addrSize ")-1)==0) {
|
||||
p = cmd+sizeof("McuI2CSpy addrSize ")-1;
|
||||
if (McuUtility_ScanDecimal8uNumber(&p, &value8)==ERR_OK && value8>=1 && value8<=4) {
|
||||
(void)McuI2CSpy_SetAddressSize(value8);
|
||||
} else {
|
||||
McuShell_SendStr((unsigned char*)"**** addrSize of range (1-4)\r\n", io->stdErr);
|
||||
}
|
||||
*handled = TRUE;
|
||||
} else if (McuUtility_strncmp((char*)cmd, "McuI2CSpy write ", sizeof("McuI2CSpy write ")-1)==0) {
|
||||
p = cmd+sizeof("McuI2CSpy write ")-1;
|
||||
if (McuUtility_ScanHex32uNumber(&p, &addr32)==ERR_OK) {
|
||||
for(cnt=0; cnt<sizeof(buf) && *p!='\0'; cnt++) { /* breaks */
|
||||
if (McuUtility_ScanHex8uNumber(&p, &buf[cnt])!=ERR_OK) {
|
||||
McuShell_SendStr((unsigned char*)"**** wrong data format\r\n", io->stdErr);
|
||||
cnt = 0;
|
||||
break;
|
||||
}
|
||||
} /* for */
|
||||
if (cnt>=1) {
|
||||
(void)McuI2CSpy_WriteRegData(addr32, &buf[0], cnt);
|
||||
}
|
||||
} /* if */
|
||||
*handled = TRUE;
|
||||
} else if (McuUtility_strncmp((char*)cmd, "McuI2CSpy dump ", sizeof("McuI2CSpy dump ")-1)==0) {
|
||||
p = cmd+sizeof("McuI2CSpy dump ")-1;
|
||||
if (McuUtility_ScanHex32uNumber(&p, &addr32)==ERR_OK) {
|
||||
if (McuUtility_strncmp((char*)p, "..", sizeof("..")-1)==0) {
|
||||
p = p+sizeof("..")-1;
|
||||
if (McuUtility_ScanHex32uNumber(&p, &end32)==ERR_OK) {
|
||||
(void)McuShell_PrintMemory(NULL, addr32, end32, McuI2CSpy_deviceData.addrSize, McuI2CSpy_deviceData.bytesPerLine, ReadData, io);
|
||||
} else {
|
||||
McuShell_SendStr((unsigned char*)"**** wrong end address\r\n", io->stdErr);
|
||||
}
|
||||
} else {
|
||||
McuShell_SendStr((unsigned char*)"**** wrong format, '..' expected.\r\n", io->stdErr);
|
||||
}
|
||||
} else {
|
||||
McuShell_SendStr((unsigned char*)"**** wrong start address\r\n", io->stdErr);
|
||||
}
|
||||
*handled = TRUE;
|
||||
} else if (McuUtility_strcmp((char*)cmd, "McuI2CSpy scan")==0) {
|
||||
ScanDevices(io);
|
||||
*handled = TRUE;
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : SetDeviceAddress (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Sets the I2C Device address to be used
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** addr - I2C 7bit address
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuI2CSpy_SetDeviceAddress(uint8_t addr)
|
||||
{
|
||||
McuI2CSpy_deviceData.deviceAddr = addr;
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : GetDeviceAddress (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Returns the current I2C Device address used
|
||||
** Parameters : None
|
||||
** Returns :
|
||||
** --- - 7bit Device Address
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuI2CSpy_GetDeviceAddress(void)
|
||||
{
|
||||
return McuI2CSpy_deviceData.deviceAddr;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : SetAddressSize (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Specifies the address size of the I2C device memory
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** size - Either 1 (8bit), 2 (16bit), 3 (24bit),
|
||||
** or 4 (32bit)
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuI2CSpy_SetAddressSize(uint8_t size)
|
||||
{
|
||||
McuI2CSpy_deviceData.addrSize = size;
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : SetBytesPerLine (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Sets the number of bytes per line for the Dump shell command
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** nofBytesPerLine - Number of bytes
|
||||
** per line
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuI2CSpy_SetBytesPerLine(uint8_t nofBytesPerLine)
|
||||
{
|
||||
McuI2CSpy_deviceData.bytesPerLine = nofBytesPerLine;
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : Init (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Initialization method
|
||||
** Parameters : None
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuI2CSpy_Init(void)
|
||||
{
|
||||
if (McuI2CSpy_SetDeviceAddress(McuI2CSpy_DEFAULT_I2C_ADDR)!=ERR_OK) {
|
||||
return ERR_FAILED;
|
||||
}
|
||||
if (McuI2CSpy_SetBytesPerLine(McuI2CSpy_DEFAULT_BYTES_PER_LINE)!=ERR_OK) {
|
||||
return ERR_FAILED;
|
||||
}
|
||||
if (McuI2CSpy_SetAddressSize(McuI2CSpy_DEFAULT_ADDR_SIZE)!=ERR_OK) {
|
||||
return ERR_FAILED;
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : Deinit (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Deinitialization method
|
||||
** Parameters : None
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuI2CSpy_Deinit(void)
|
||||
{
|
||||
/* nothing to do */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : McuI2CSpy_OnRequestBus (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** This method is internal. It is used by Processor Expert only.
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuI2CSpy_OnRequestBus(void)
|
||||
{
|
||||
/* Write your code here ... */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : McuI2CSpy_OnReleaseBus (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** This method is internal. It is used by Processor Expert only.
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuI2CSpy_OnReleaseBus(void)
|
||||
{
|
||||
/* Write your code here ... */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : ReadRegData (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Reads data starting from a register address from the current
|
||||
** device
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** addr - Device address
|
||||
** * data - Pointer to data buffer where read data
|
||||
** is stored
|
||||
** dataSize - size of data buffer in bytes
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuI2CSpy_ReadRegData(uint32_t addr, uint8_t *data, size_t dataSize)
|
||||
{
|
||||
uint8_t addrBuf[4];
|
||||
|
||||
addrBuf[3] = (uint8_t)(addr&0xff);
|
||||
addrBuf[2] = (uint8_t)((addr&0xff00)>>8);
|
||||
addrBuf[1] = (uint8_t)((addr&0xff0000)>>16);
|
||||
addrBuf[0] = (uint8_t)((addr&0xff000000)>>24);
|
||||
return McuGenericI2C_ReadAddress(McuI2CSpy_deviceData.deviceAddr, &addrBuf[4-McuI2CSpy_deviceData.addrSize],
|
||||
McuI2CSpy_deviceData.addrSize, data, dataSize);
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : WriteRegData (component I2CSpy)
|
||||
**
|
||||
** Description :
|
||||
** Writes data starting from a register address to the current
|
||||
** device
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** addr - Address in device
|
||||
** * data - Pointer to data to write
|
||||
** dataSize - Size of data in bytes
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuI2CSpy_WriteRegData(uint32_t addr, uint8_t *data, uint16_t dataSize)
|
||||
{
|
||||
uint8_t addrBuf[4];
|
||||
|
||||
addrBuf[3] = (uint8_t)(addr&0xff);
|
||||
addrBuf[2] = (uint8_t)((addr&0xff00)>>8);
|
||||
addrBuf[1] = (uint8_t)((addr&0xff0000)>>16);
|
||||
addrBuf[0] = (uint8_t)((addr&0xff000000)>>24);
|
||||
return McuGenericI2C_WriteAddress(McuI2CSpy_deviceData.deviceAddr, &addrBuf[4-McuI2CSpy_deviceData.addrSize],
|
||||
McuI2CSpy_deviceData.addrSize, data, dataSize);
|
||||
}
|
||||
|
||||
/* END McuI2CSpy. */
|
||||
|
||||
/*!
|
||||
** @}
|
||||
*/
|
||||
Reference in New Issue
Block a user