[开发工具] 【新定义MCU开发板测评】+ EBS003读写AT24C04

[复制链接]
 楼主| 比神乐 发表于 2023-2-16 10:41 | 显示全部楼层 |阅读模式
本帖最后由 比神乐 于 2023-2-16 10:44 编辑

昨天搞了一下AT24C04,谁知搞完21ic网站打不开了,今天补上。原理图
3.jpg


4.jpg

5.jpg

主程序代码:
  1. #include "SC_Init.h"        // MCU initialization header file, including all firmware library header files
  2. #include "SC_it.h"
  3. #include "..\Drivers\SCDriver_list.h"
  4. #include "HeadFiles\SysFunVarDefine.h"
  5. /**************************************Generated by EasyCodeCube*************************************/
  6. USCI3_HandleInfoDef* USCI3_HANDLE;
  7. uint8_t pData=235;
  8. uint8_t temp=0;
  9. /*************************************.Generated by EasyCodeCube.************************************/
  10. /*****************************************************************************************************
  11. * Function Name: main
  12. * Description  : This function implements main function.
  13. * Arguments    : None
  14. * Return Value : None
  15. ******************************************************************************************************/
  16. void main(void)
  17. {        
  18.         uint8_t bai,shi,ge;
  19.     /*<Generated by EasyCodeCube begin>*/
  20.     /*<UserCodeStart>*//*<SinOne-Tag><36>*/
  21.     IcResourceInit();
  22.     /*<UserCodeEnd>*//*<SinOne-Tag><36>*/
  23.     /*<UserCodeStart>*//*<SinOne-Tag><101>*/
  24.     OLED_Init();
  25.     /*<UserCodeEnd>*//*<SinOne-Tag><101>*/
  26.     /*<UserCodeStart>*//*<SinOne-Tag><102>*/
  27.     OLED_Clear();
  28.     /*<UserCodeEnd>*//*<SinOne-Tag><102>*/
  29.         OLED_ShowCHinese( 20 , 0 , 0 );
  30.     OLED_ShowCHinese( 38 , 0 , 1 );
  31.     OLED_ShowCHinese( 56 , 0 , 2 );
  32.     OLED_ShowCHinese( 74 , 0 , 3 );
  33.     OLED_ShowCHinese( 92 , 0 , 4 );
  34.     /*<UserCodeStart>*//*<SinOne-Tag><4>*/
  35.         OLED_ShowCHinese( 0 , 2 , 5 );
  36.     OLED_ShowCHinese( 16 , 2 , 6 );
  37.     OLED_ShowCHinese( 32 , 2 , 7 );
  38.     OLED_ShowCHinese( 48 , 2 , 8 );
  39.         OLED_ShowChar(64,2,':',16);

  40.     /*****MainLoop*****/
  41.         OLED_ShowCHinese( 0 , 4 , 9 );
  42.     OLED_ShowCHinese( 16 , 4 , 10 );
  43.     OLED_ShowCHinese( 32 , 4 , 7 );
  44.     OLED_ShowCHinese( 48 , 4 , 8 );
  45.         OLED_ShowChar(64,4,':',16);

  46.         //USCI3_TWI_Master_Transmit(USCI3_HANDLE,0,&pData,1,1000);
  47.         AT24C04_Write_Byte(0,235);
  48.         OLED_ShowChar(80,2,'2',16);
  49.         OLED_ShowChar(88,2,'3',16);
  50.         OLED_ShowChar(96,2,'5',16);
  51.         //USCI3_TWI_Master_Receive(USCI3_HANDLE, 0, &temp, 1, 1000);
  52.         temp=AT24C04_Read_Byte(0);
  53.         bai=(temp/100)+0x30;
  54.         shi=(temp%100/10)+0x30;
  55.         ge=(temp%10)+0x30;
  56.         OLED_ShowChar(80,4,bai,16);
  57.         OLED_ShowChar(88,4,shi,16);
  58.         OLED_ShowChar(96,4,ge,16);
  59.     while(1)
  60.     {
  61.         /*<UserCodeStart>*//*<SinOne-Tag><103>*/
  62.         
  63.         /*<UserCodeEnd>*//*<SinOne-Tag><103>*/
  64.         /*<UserCodeStart>*//*<SinOne-Tag><104>*/
  65.         //OLED_ShowString( 10,2,CharData,16);
  66.                
  67.         /*<UserCodeEnd>*//*<SinOne-Tag><104>*/
  68.         /*<UserCodeStart>*//*<SinOne-Tag><105>*/
  69.         //OLED_ShowNum( 40,4,202212,6,16);
  70.         /*<UserCodeEnd>*//*<SinOne-Tag><105>*/
  71.         /*<Begin-Inserted by EasyCodeCube for Condition>*/
  72.     }
  73.     /*<UserCodeEnd>*//*<SinOne-Tag><4>*/
  74.     /*<Generated by EasyCodeCube end>*/
  75. }

初始化程序:
  1. #include "SC_Init.h"
  2. #include "SC_it.h"
  3. #include "..\Drivers\SCDriver_list.h"
  4. #include "HeadFiles\SysFunVarDefine.h"
  5. /**************************************Generated by EasyCodeCube*************************************/
  6. void IcResourceInit()
  7. {
  8.     /*<UserCodeStart>*//*<SinOne-Tag><37>*/
  9.         SC_Init(); /***MCU init***/
  10.         
  11.     /*<UserCodeEnd>*//*<SinOne-Tag><37>*/
  12. }

  13. /*****************************************************
  14. *函数名称: SC_Init
  15. *函数功能: MCU初始化函数
  16. *入口参数:void
  17. *出口参数:void
  18. *****************************************************/
  19. void SC_Init(void)
  20. {
  21.         SC_GPIO_Init();
  22.         SC_OPTION_Init();
  23.         SC_USCI0_Init();
  24.         SC_USCI3_Init();
  25.         /*write initial function here*/        
  26.         EA = 1;        
  27. }

  28. /*****************************************************
  29. *函数名称: SC_USCI0_Init
  30. *函数功能: USCI0初始化函数
  31. *入口参数:void
  32. *出口参数:void
  33. *****************************************************/
  34. void SC_USCI0_Init(void)
  35. {
  36.         GPIO_Init(GPIO0, GPIO_PIN_5,GPIO_MODE_IN_PU);
  37.         USCI0_TWI_GeneralCallCmd(ENABLE);
  38.         USCI0_TWI_AcknowledgeConfig(ENABLE);
  39.         USCI0_ITConfig(ENABLE,LOW);
  40.         USCI0_TWI_MasterCommunicationRate(USCI0_TWI_32);
  41.         USCI0_TWI_SlaveClockExtension(DISABLE);
  42.         USCI0_TWI_Slave_Init(0x00);
  43.         USCI0_TWI_Cmd(ENABLE);
  44.         /*USCI0_Init write here*/               
  45. }

  46. /*****************************************************
  47. *函数名称: SC_USCI3_Init
  48. *函数功能: USCI3初始化函数
  49. *入口参数:void
  50. *出口参数:void
  51. *****************************************************/
  52. void SC_USCI3_Init(void)
  53. {
  54.         /*USCI3_Init write here*/
  55.         GPIO_Init(GPIO2, GPIO_PIN_6,GPIO_MODE_IN_PU);
  56.         USCI3_TWI_GeneralCallCmd(ENABLE);
  57.         USCI3_TWI_AcknowledgeConfig(ENABLE);
  58.         USCI3_ITConfig(ENABLE,LOW);
  59.            //USCI3_ITConfig(DISABLE,LOW);
  60.         USCI3_TWI_MasterCommunicationRate(USCI3_TWI_32);
  61.         USCI3_TWI_SlaveClockExtension(DISABLE);
  62.         USCI3_TWI_Slave_Init(0x00);
  63.         USCI3_TWI_Cmd(ENABLE);               
  64. }
AT24C04读写函数:
  1. void AT24C04_Write_Byte(uint8_t Addr,uint8_t Data)
  2. {
  3.         uint16_t i;
  4.         Select_USCI3();//选择控制USCI3
  5.           US3CON1 |= 0x20;
  6.         while((US3CON0&0X07)!=0x00);
  7.         
  8.         US3CON3=0xA0;
  9.         //while((US3CON1&0X80)==0x00);
  10.         while((US3CON0&0X07)!=0x00);
  11.         
  12.         US3CON3=Addr;
  13.         while((US3CON1&0X80)==0x00);
  14.         //US3CON0&=0xBF;
  15.         //while((US3CON0&0X07)!=0x00);
  16.         
  17.         US3CON3=Data;
  18.         while((US3CON1&0X40)==0x00);
  19.         US3CON0&=0xBF;
  20.         //while((US3CON0&0X07)!=0x00);
  21.         
  22.         US3CON1 |= 0x10;
  23.         for(i=0;i<20000;i++);
  24.         //US3CON3=0;                                         //清标志位
  25. }
  26. uint8_t AT24C04_Read_Byte(uint8_t Addr)
  27. {
  28.         uint8_t Data;
  29.         Select_USCI3();//选择控制USCI3
  30.           US3CON1 |= 0x20;
  31.         while((US3CON0&0X07)!=0x00);

  32.            US3CON3=0xA0;
  33.         while((US3CON0&0X07)!=0x00);
  34.         
  35.         US3CON3=Addr;
  36.         while((US3CON0&0X07)!=0x00);

  37.         US3CON1 |= 0x20;
  38.         while((US3CON0&0X07)!=0x00);

  39.     US3CON3=0xA1;
  40.         while((US3CON0&0X07)!=0x00);

  41.         while((US3CON0&0X40)==0x00);
  42.         US3CON0&=0XBF;
  43.            Data=US3CON3;
  44.         US3CON0 &= 0XF7;
  45.         US3CON1 |= 0x10;
  46.         return Data;
  47. }
  48. /******************* (C) COPYRIGHT 2022 RDS Microelectronics *****END OF FILE****/


效果图:
2.jpg
补充SDA是P26,SCL是P27.图片有点不清楚,在我手机上很清楚,传上去看不清了。写读都是235.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3535

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部