{"id":410,"date":"2024-10-27T10:58:40","date_gmt":"2024-10-27T02:58:40","guid":{"rendered":"https:\/\/www.armfun.cn\/?p=410"},"modified":"2024-10-27T10:59:34","modified_gmt":"2024-10-27T02:59:34","slug":"%ef%bc%88%e4%b9%9d%ef%bc%89proteus%e4%bb%bf%e7%9c%9fstm32%e5%8d%95%e7%89%87%e6%9c%ba%e7%a1%ac%e4%bb%b6i2c%e5%92%8c%e6%a8%a1%e6%8b%9fi2c%e8%af%bb%e5%86%99pcf8563%e6%97%b6%e9%92%9f","status":"publish","type":"post","link":"https:\/\/www.armfun.cn\/?p=410","title":{"rendered":"\uff08\u4e5d\uff09Proteus\u4eff\u771fSTM32\u5355\u7247\u673a\u786c\u4ef6I2C\u548c\u6a21\u62dfI2C\u8bfb\u5199PCF8563\u65f6\u949f"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1014\" height=\"906\" src=\"https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-3.png\" alt=\"\" class=\"wp-image-411\" srcset=\"https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-3.png 1014w, https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-3-300x268.png 300w, https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-3-768x686.png 768w, https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-3-670x599.png 670w\" sizes=\"(max-width: 1014px) 100vw, 1014px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">1,\u542f\u7528I2C1,\u5982\u4e0b\u56fe\uff0cPB8 PB9\u81ea\u52a8\u53d8\u6210I2C\u6a21\u5f0f<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"691\" src=\"https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-4-1024x691.png\" alt=\"\" class=\"wp-image-412\" srcset=\"https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-4-1024x691.png 1024w, https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-4-300x202.png 300w, https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-4-768x518.png 768w, https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-4-1536x1037.png 1536w, https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-4-670x452.png 670w, https:\/\/www.armfun.cn\/wp-content\/uploads\/2024\/10\/image-4.png 1575w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">2\uff0c\u5b9e\u73b0I2C\u8bfb\u5199\u9a71\u52a8\u51fd\u6570<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/i2c \u5199\nint VI2C_STD_Writebytes(uchar device,uchar reg,uchar *buff,uchar len)\n{\n\treturn HAL_I2C_Mem_Write(&amp;hi2c1, device, reg, 1,buff, len, 100);\n}\n\/\/i2c \u8bfb\nint VI2C_STD_Readbytes(uchar device,uchar reg,uchar *buff,uchar len)\n{\n\t\n\treturn HAL_I2C_Mem_Read(&amp;hi2c1, device, reg, 1,buff, len, 100);\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3\uff0cprotues\u4e0d\u652f\u6301stm32\u786c\u4ef6I2C,\u4e0b\u9762\u662f\u6a21\u62dfI2C\u9a71\u52a8,\u6ce8\u610f\u5c06PB8\u914d\u7f6e\u4e3a\u63a8\u633d\u8f93\u51fa\uff0cPB9\u914d\u7f6e\u4e3a\u5f00\u6f0f\u8f93\u51fa\u5e76\u4e0a\u62c9\u4f7f\u80fd\u5b9e\u73b0\u53cc\u5411\u8bfb\u5199<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>#define VI2C_SCL_0() HAL_GPIO_WritePin(I2C_SCL_GPIO_Port, I2C_SCL_Pin, GPIO_PIN_RESET)\n#define VI2C_SCL_1() HAL_GPIO_WritePin(I2C_SCL_GPIO_Port, I2C_SCL_Pin, GPIO_PIN_SET)\n#define VI2C_SDA_0() HAL_GPIO_WritePin(I2C_SDA_GPIO_Port, I2C_SDA_Pin, GPIO_PIN_RESET)\n#define VI2C_SDA_1() HAL_GPIO_WritePin(I2C_SDA_GPIO_Port, I2C_SDA_Pin, GPIO_PIN_SET)\nvoid i2c_delay()\n{\n\t__IO unsigned int cnts=10;\n\twhile(cnts--);\n}\n\nvoid VI2C_Start()\n{\n    VI2C_SDA_1();\n    i2c_delay();\n    VI2C_SCL_1();\n    i2c_delay();\n    VI2C_SDA_0(); \n    i2c_delay();\n\t\t\n}\nvoid VI2C_Stop(void)\n{\n    VI2C_SDA_0();\n    i2c_delay();\n    VI2C_SCL_1();\n    i2c_delay();\n    VI2C_SDA_1();\n    i2c_delay();\n}\nuchar VI2C_ReadACK(void)\n{\n   uchar ret=1;\n    VI2C_SCL_1();\n    i2c_delay();\n    if(VI2C_READ_SDA()==0)\n      ret=0;\n\tVI2C_SCL_0();\n\ti2c_delay();\n    return ret;\n}\nuchar  VI2C_WriteData(uchar data)\n{\t\n  uchar i;\n  for(i=0;i&lt;8;i++)\n  {\n\tVI2C_SCL_0();\n\ti2c_delay();\n\tif(data&amp;0x80)\n\t    VI2C_SDA_1();\n    else\n      VI2C_SDA_0();\n\ti2c_delay();\n\tVI2C_SCL_1();\n\ti2c_delay();\n    data=data&lt;&lt;1;\n  }\n\tVI2C_SCL_0();\n\ti2c_delay();\n\tVI2C_SDA_1();\n  return VI2C_ReadACK();\n}\nuchar VI2C_WriteAdd(uchar add,uchar w)\n{\n  uchar data;\n  if(w)\n  {\n    data=add;\n  }\n  else\n  {\n    data=(add|0x01);\n  }\n  return VI2C_WriteData(data);\n}\n\nuchar VI2C_ReadData(uchar *data,uchar ack)\n{\n    uchar ret , i;\n    VI2C_SCL_0();\n    i2c_delay();\n    for(i=0;i&lt;8;i++)\n    {\n        ret=ret&lt;&lt;1;\n\tVI2C_SCL_1();\n        i2c_delay();\n        if(VI2C_READ_SDA())\n          ret=ret|1;\n        else\n          ret=ret&amp;0xfe;\n\tVI2C_SCL_0();\n\ti2c_delay();\n    }\n    if(ack)\n        VI2C_SDA_0();\n    else\n        VI2C_SDA_1();\n    i2c_delay();\n    VI2C_SCL_1();\n    i2c_delay();\n    VI2C_SCL_0();\n    i2c_delay();\n    VI2C_SDA_1();\n    *data=ret; \n    return 0;\n}\n\nuchar VI2C_STD_Writebytes(uchar add,uchar cmd,uchar *data, uchar len)\n{\n    unsigned char i,err=0;\n    VI2C_Start();\n    if(VI2C_WriteAdd(add,1))\n    {\n      err|=2;\/\/no ack\n      goto end;\n    }\n    if(VI2C_WriteData(cmd))\n    {\n      err|=4;\/\/no ack\n      goto end;\n    }\n    for(i=0;i&lt;len;i++)\n    {\n        if(VI2C_WriteData(data&#91;i]))\n        {\n          err|=4;\/\/no ack\n          goto end;\n        }\n    }\nend:\n    VI2C_Stop();\n    return err;\n}\n\nuchar VI2C_STD_Readbytes(uchar add,uchar cmd,uchar *data, uchar len)\n{\n    unsigned char i,err=0;\n    VI2C_Start();\n    if(VI2C_WriteAdd(add,1))\n    {\n      err|=2;\/\/no ack\n      goto end;\n    }\n    if(VI2C_WriteData(cmd))\n    {\n      err|=4;\/\/no ack\n      goto end;\n    }\n    VI2C_Start();\n    if(VI2C_WriteAdd(add,0))\n    {\n      err|=2;\/\/no ack\n      goto end;\n    }\n    for(i=0;i&lt;len;i++)\n    {\n        if(VI2C_ReadData(data+i,1))\n        {\n          err|=4;\/\/no ack\n          goto end;\n        }\n    }\nend:\n    VI2C_Stop();\n    return err;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4\uff0cPCF8563\u65f6\u949f\u8bfb\u5199\u9a71\u52a8<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>typedef struct \n{\n  uchar sec;\n  uchar min;\n  uchar hour;\n  uchar day;\n  uchar week;\n  uchar month;\n  uchar year;\n}Struct_CLOCK;\n#define TB_PCF8563_ADDR       0XA2 \nStruct_CLOCK systemclock={0x10,0x30,0X13,0X01,0X02,0X10,0X24};\/\/2024-10-1 13:30:10\nvoid PCF8563_Init(void)\n{\n  uchar I2cwdtbuf&#91;16];\n  I2cwdtbuf&#91;0] = 0x00;\n  I2cwdtbuf&#91;1] = 0x00; \n  I2cwdtbuf&#91;13] = 0xFF;    \/\/CLK out 1HZ\n  I2cwdtbuf&#91;14] = 0x00;   \n  I2cwdtbuf&#91;15] = 0x00;      \n  \n  VI2C_STD_Writebytes(TB_PCF8563_ADDR,0,I2cwdtbuf,2);  \n  VI2C_STD_Writebytes(TB_PCF8563_ADDR,13,(I2cwdtbuf+13),1);    \n  VI2C_STD_Writebytes(TB_PCF8563_ADDR,14,(I2cwdtbuf+14),2);   \n}\nvoid PCF8563_Read(void)\n{\n  if(VI2C_STD_Readbytes(TB_PCF8563_ADDR,0X02,(uchar *)&amp;systemclock,7)==0)\n  {\n    systemclock.sec  &amp;= 0X7F;\n    systemclock.min  &amp;= 0X7F;\n    systemclock.hour  &amp;= 0X3F;\n    systemclock.day  &amp;= 0X3F;\n    systemclock.week  &amp;= 0X07;\n    systemclock.month &amp;= 0X1F;\n    \/\/systemclock.year  &amp;= 0XFF;\n  }\n}\nvoid ZPCF8563_Write()\n{\n  if(VI2C_STD_Writebytes(TB_PCF8563_ADDR,0X02,(uchar *)&amp;systemclock,7)==0)\n  {\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">git\u6e90\u7801\uff1a<a href=\"https:\/\/gitee.com\/armfun\/stm32_proteus\">https:\/\/gitee.com\/armfun\/stm32_proteus<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1,\u542f\u7528I2C1,\u5982\u4e0b\u56fe\uff0cPB8 PB9\u81ea\u52a8\u53d8\u6210I2C\u6a21\u5f0f 2\uff0c\u5b9e\u73b0I2&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-410","post","type-post","status-publish","format-standard","hentry","category-arm"],"views":1524,"_links":{"self":[{"href":"https:\/\/www.armfun.cn\/index.php?rest_route=\/wp\/v2\/posts\/410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.armfun.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.armfun.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.armfun.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.armfun.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=410"}],"version-history":[{"count":3,"href":"https:\/\/www.armfun.cn\/index.php?rest_route=\/wp\/v2\/posts\/410\/revisions"}],"predecessor-version":[{"id":415,"href":"https:\/\/www.armfun.cn\/index.php?rest_route=\/wp\/v2\/posts\/410\/revisions\/415"}],"wp:attachment":[{"href":"https:\/\/www.armfun.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.armfun.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.armfun.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}