关于LPC812的IIC接口问题
int GetData(uchar REG_Address){
UINT16 data;
Buffer = SlaveAddress | 0x01;
Buffer = REG_Address & 0x0FF;
param.num_bytes_recv = 2;
param.buffer_ptr_recv = &Buffer;
param.stop_flag = 1;
do {
error_code = LPC_I2CD_API->i2c_master_receive_poll(i2c_handle, ¶m, &result);
} while (error_code);
return *((UINT16 *)Buffer);
}
主机:LPC812
从机:MPU6050
从机地址:SlaveAddress
从机子地址:REG_Address
我想写一个函数读取器件“MPU6050子地址”里面的值。
各位熟悉IIC的帮我看,是不是我只要把“MPU6050子地址”顺序写在SlaveAddress 后面就可以了?
LPC_I2CD_API->i2c_master_receive_poll是nxp提供的函数。
现在error_code一直等于0x28.
另外想了解error_code的含义去哪里查找?
谢谢各位 你是用什么开发环境?是官方的例程吗? leifeng 发表于 2013-6-19 16:18 static/image/common/back.gif
你是用什么开发环境?是官方的例程吗?
keil4.7 是官方的例程 leifeng 发表于 2013-6-19 16:18 static/image/common/back.gif
你是用什么开发环境?是官方的例程吗?
GetData是我自己写的 有问题
ksn13 发表于 2013-6-19 16:51 static/image/common/back.gif
keil4.7 是官方的例程
例程
#if I2C_MASTER_MODE
/* Master Polling Mode */
static void App_I2C_Master_Polling(void)
{
/* Transmit TmpBuffer */
/* Initialize buffer */
Buffer_Init(TmpBuffer, BUFFER_SIZE, 1);
TmpBuffer = I2C_SLAVE_ADDR_7BIT;
param.num_bytes_send = BUFFER_SIZE;
param.buffer_ptr_send = &TmpBuffer;
param.stop_flag = 1;
do {
error_code = LPC_I2CD_API->i2c_master_transmit_poll(i2c_handle, ¶m, &result);
} while (error_code);
/* Receive Buffer and compare with TmpBuffer */
/* Initialize buffer */
Buffer_Init(Buffer, BUFFER_SIZE, 0);
Buffer = I2C_SLAVE_ADDR_7BIT | 0x01;
param.num_bytes_recv = BUFFER_SIZE;
param.buffer_ptr_recv = &Buffer;
param.stop_flag = 1;
do {
error_code = LPC_I2CD_API->i2c_master_receive_poll(i2c_handle, ¶m, &result);
} while (error_code);
/* Verify */
Buffer_Compare(TmpBuffer, Buffer, 1, BUFFER_SIZE);
/* Transmit TmpBuffer and receive Buffer, then compare them together */
/* Initialize buffer */
Buffer_Init(Buffer, BUFFER_SIZE, 0);
Buffer = I2C_SLAVE_ADDR_7BIT | 0x01;
TmpBuffer = I2C_SLAVE_ADDR_7BIT;
TmpBuffer = 0xBA;
param.num_bytes_send = BUFFER_SIZE;
param.buffer_ptr_send = &TmpBuffer;
param.num_bytes_recv = BUFFER_SIZE;
param.buffer_ptr_recv = &Buffer;
param.stop_flag = 1;
do {
error_code = LPC_I2CD_API->i2c_master_tx_rx_poll(i2c_handle, ¶m, &result);
} while (error_code);
/* Verify */
Buffer_Compare(TmpBuffer, Buffer, 1, BUFFER_SIZE);
} 请教楼主一些问题:
1.lpc单片机主要应用那些领域?lpc是恩智浦的单片机吗?
2.我看了P89LPC952的文档,发现和STC单片机的内容有惊人的相似。主要是寄存器名称,大体功能痛,只不过STC的文档比较难看一点
3.写lpc程序也是用keil C软件吗?
虽然用了好几年单片机,虽然不是老手,但是也算用得得心应手,但是对lpc还是比较陌生。 fqc168 发表于 2013-9-27 22:14 static/image/common/back.gif
请教楼主一些问题:
1.lpc单片机主要应用那些领域?lpc是恩智浦的单片机吗?
1. 是
3. 是 LPC812现在是什么价格啊? w534172 发表于 2014-10-17 15:53
LPC812现在是什么价格啊?
淘宝上 7、8块钱左右吧。 楼主有没有用到串口啊?我用发送中断做的程序数据量大会漏发 xyq4513 发表于 2014-10-17 22:20
楼主有没有用到串口啊?我用发送中断做的程序数据量大会漏发
肯定是你自己代码写的有问题,仔细分析一下程序看看为什么漏发。其它的原因暂时不需要考虑。
页:
[1]