在线时间18 小时
UID3091468
注册时间2015-1-12
NXP金币0
该用户从未签到
注册会员

- 积分
- 90
- 最后登录
- 2015-4-30
|

楼主 |
发表于 2015-1-30 13:32:05
|
显示全部楼层
本帖最后由 good852 于 2015-1-30 13:35 编辑
我是使用Hello world裡添加 I2C_1控制
使用KSDK_1.1.0 Library
hello_frdmk64f/ksdk_Files/pin_mux.c修改
void configure_i2c_pins(uint32_t instance)
{
switch(instance) {
//----------------------------------------------------------------------------------------------------------------------I2C
case HW_I2C0: /* I2C0 */
/* Affects PORTE_PCR24 register */
PORT_HAL_SetMuxMode(PORTE_BASE,24u,kPortMuxAlt5);
PORT_HAL_SetOpenDrainCmd(PORTE_BASE,24u,true);
/* Affects PORTE_PCR25 register */
PORT_HAL_SetMuxMode(PORTE_BASE,25u,kPortMuxAlt5);
PORT_HAL_SetOpenDrainCmd(PORTE_BASE,25u,true);
break;
case HW_I2C1: /* I2C1 */
/* Affects PORTC_PCR10 register */
PORT_HAL_SetMuxMode(PORTC_BASE,10u,kPortMuxAlt2);
// PORT_HAL_SetOpenDrainCmd(PORTC_BASE,10u,true);<=拿掉
/* Affects PORTC_PCR11 register */
PORT_HAL_SetMuxMode(PORTC_BASE,11u,kPortMuxAlt2);
// PORT_HAL_SetOpenDrainCmd(PORTC_BASE,11u,true); <=拿掉
break;
//----------------------------------------------------------------------------------------------------------------------I2C
default:
break;
}
}
hello_frdmk64f/ksdk_Files/hardware_init.c修改
void hardware_init(void) {
uint8_t i;
/* enable clock for PORTs */
for (i = 0; i < HW_PORT_INSTANCE_COUNT; i++) {
CLOCK_SYS_EnablePortClock(i);
}
/* Setup board clock source. */
g_xtal0ClkFreq = 50000000U;
g_xtalRtcClkFreq = 32768U;
for (i = 0; i < HW_PORT_INSTANCE_COUNT; i++) {
configure_gpio_pins(i);
}
//----------------------------------------------------------------------------------------------------------------------I2C
configure_i2c_pins(0u);
configure_i2c_pins(1u);
//----------------------------------------------------------------------------------------------------------------------I2C
}
hello_frdmk64f/sources/hello.c修改 world_task副程式
unsigned char A1[8]={0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char A2[8]={0xff,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC};
extern void I2C1_IRQHandler(void);
void world_task
(
uint32_t initial_data
)
{
_task_id hello_task_id;
unsigned long i;
hello_task_id = _task_create(0, HELLO_TASK, 0);
if (hello_task_id == MQX_NULL_TASK_ID) {
printf ("\n Could not create hello_task\n");
} else {
printf(" World \n");
}
//----------------------------------------------------------------------------------------------------------------------I2C
i2c_master_state_t master;
i2c_status_t returnValue;
i2c_device_t slave =
{
.address = 0x50,//0x78A0,//0B10100000,//0xA0,
.baudRate_kbps = 5
};
OSA_Init();
OSA_InstallIntHandler(I2C1_IRQn, I2C1_IRQHandler);
// NVIC_SetPriority(I2C0_IRQn, 4);
NVIC_SetPriority(I2C1_IRQn, 4);
I2C_DRV_MasterInit(1, &master);
// I2C_DRV_MasterDeinit(1);
I2C_DRV_MasterSetBaudRate(1,&slave);
OSA_Start();
// OSA_TimeDelay(200);
// returnValue = I2C_DRV_MasterSendDataBlocking(1,&slave,cmdBuff,1,sendBuff,sizeof(sendBuff),500);
// returnValue = I2C_DRV_MasterSendDataBlocking(1,&slave,ABCD,1,ABCD,sizeof(sendBuff),500);
while(1)
{
// I2C_DRV_MasterSendDataBlocking(1,&I2CDevice, ABCD, 2, ABCD, 2, 2);
I2C_DRV_MasterSendDataBlocking(1,&slave,NULL,0,A2,1,20);
// I2C_DRV_MasterReceiveDataBlocking(1,&slave,ABCD,1,ABCD,1,50);
printf(" World \n");
for(i=0;i<4999999;i++)
{}
/* for(i=0;i<4999999;i++)
{}
for(i=0;i<4999999;i++)
{}
*/
}
//----------------------------------------------------------------------------------------------------------------------I2C
_task_block();
}
|
|