OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2474|回复: 1

I2C的基本配置,無收到傳送位置後的回應

[复制链接]

1

主题

10

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2016-4-7
在线时间
5 小时
发表于 2016-4-7 15:33:46 | 显示全部楼层 |阅读模式
1金钱
如題所示,目前需要寫EEPROM_2MB開I2C1的功能 但是卻卡在傳送位置0xA8後沒有Ack,所以在懷疑是不是設置功能的時候有問題
跪求大神出來幫小渣渣我~~~謝謝
附上程式碼,歡迎各位大大一起除蟲
void sEE_Init(void)
{
   I2C_InitTypeDef  I2C_InitStructure;

   sEE_LowLevel_Init();

   /*!< I2C configuration */
   /* sEE_I2C configuration */
   I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
   I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
   I2C_InitStructure.I2C_OwnAddress1 = I2C_SLAVE_ADDRESS7;
   I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
   I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
   I2C_InitStructure.I2C_ClockSpeed = I2C_SPEED;

   /* sEE_I2C Peripheral Enable */
   I2C_Cmd(sEE_I2C, ENABLE);
   /* Apply sEE_I2C configuration after enabling it */
   I2C_Init(sEE_I2C, &I2C_InitStructure);
   I2C_ITConfig(I2C2, I2C_IT_BUF , ENABLE);
   /* Enable the sEE_I2C peripheral DMA requests */
   I2C_DMACmd(sEE_I2C, ENABLE);
   sEEAddress=sEE_HW_ADDRESS;

}
void sEE_LowLevel_Init(void)
{
   GPIO_InitTypeDef  GPIO_InitStructure;
   NVIC_InitTypeDef NVIC_InitStructure;  

   /*!< sEE_I2C_SCL_GPIO_CLK and sEE_I2C_SDA_GPIO_CLK Periph clock enable */
   RCC_APB2PeriphClockCmd(sEE_I2C_SCL_GPIO_CLK | sEE_I2C_SDA_GPIO_CLK, ENABLE);

   /*!< sEE_I2C Periph clock enable */
   RCC_APB1PeriphClockCmd(sEE_I2C_CLK, ENABLE);

   /*!< GPIO configuration */  
   /*!< Configure sEE_I2C pins: SCL */
   GPIO_InitStructure.GPIO_Pin = sEE_I2C_SCL_PIN;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
   GPIO_Init(sEE_I2C_SCL_GPIO_PORT, &GPIO_InitStructure);

   /*!< Configure sEE_I2C pins: SDA */
   GPIO_InitStructure.GPIO_Pin = sEE_I2C_SDA_PIN;
   GPIO_Init(sEE_I2C_SDA_GPIO_PORT, &GPIO_InitStructure);

   /* Configure and enable I2C DMA TX Channel interrupt */
   NVIC_InitStructure.NVIC_IRQChannel = sEE_I2C_DMA_TX_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = sEE_I2C_DMA_PREPRIO;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = sEE_I2C_DMA_SUBPRIO;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);

   /* Configure and enable I2C DMA RX Channel interrupt */
   NVIC_InitStructure.NVIC_IRQChannel = sEE_I2C_DMA_RX_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = sEE_I2C_DMA_PREPRIO;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = sEE_I2C_DMA_SUBPRIO;
   NVIC_Init(&NVIC_InitStructure);  

   /*!< I2C DMA TX and RX channels configuration */
   /* Enable the DMA clock */
   RCC_AHBPeriphClockCmd(sEE_I2C_DMA_CLK, ENABLE);

   /* I2C TX DMA Channel configuration */
   DMA_DeInit(sEE_I2C_DMA_CHANNEL_TX);
   sEEDMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)sEE_I2C_DR_Address;
   sEEDMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)0;   /* This parameter will be configured durig communication */
   sEEDMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;    /* This parameter will be configured durig communication */
   sEEDMA_InitStructure.DMA_BufferSize = 0xFFFF;            /* This parameter will be configured durig communication */
   sEEDMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
   sEEDMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
   sEEDMA_InitStructure.DMA_PeripheralDataSize = DMA_MemoryDataSize_Byte;
   sEEDMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
   sEEDMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
   sEEDMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
   sEEDMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
   DMA_Init(sEE_I2C_DMA_CHANNEL_TX, &sEEDMA_InitStructure);  

   /* I2C RX DMA Channel configuration */
   DMA_DeInit(sEE_I2C_DMA_CHANNEL_RX);
   DMA_Init(sEE_I2C_DMA_CHANNEL_RX, &sEEDMA_InitStructure);  

   /* Enable the DMA Channels Interrupts */
   DMA_ITConfig(sEE_I2C_DMA_CHANNEL_TX, DMA_IT_TC, ENABLE);
   DMA_ITConfig(sEE_I2C_DMA_CHANNEL_RX, DMA_IT_TC, ENABLE);   
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-4-9 22:30:40 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-11 03:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表