¤¤¤í¤¤¤í»î¤¹59
¡üSTM32L1¤ÈSTM8¥·¥ê¡¼¥º¤¬NRND¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡Ä
¤Û¤é¸À¤ï¤ó¤³¤Ã¤Á¤ã¤Ê¤¤¡Ä²¹¤á¤¹¤®¤ÆÉå¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡Äorz
STM8¥·¥ê¡¼¥º¤Ï¤â¤¦¾¯¤·¿Ê¤á¤¿¤«¤Ã¤¿¤Î¤Ç¤¹¤¬STM32C0¤¬Åо줷¤Æ
´û¸¤Î8¥Ó¥Ã¥È¤Ï¥¨¥³¥·¥¹¥Æ¥à¤«¤éÇÓ½ü¤µ¤ì¶îÃव¤ì¤ëÀª¤¤¤È¤Ê¤Ã¤Æ
¤·¤Þ¤¤¤Þ¤·¤¿¤Í¡ÄSTM32L1¤Î¤Û¤¦¤ÏSTM32L0,STM32U5¤È¤«¤¬Åо줷¤¿
¤Î¤Ç¤ªÌò¸æÌȤȤʤä¿´¶¤¸¤Ç¤·¤ç¤¦¤«¡Ä
º£¤Î¥é¥¤¥ó¥Ê¥Ã¥×¤ò´Õ¤ß¤ë¤Ë¤Í¤à¤¤¤µ¤ó¤¬»È¤Ã¤Æ¤¤¿STM32F2¤äF4,
L4,L5¤È¤«¤â¼¡¤ÎNRND¸õÊä¤Ë¤Ê¤Ã¤Á¤ã¤¤¤½¤¦¤Ç¤¹¤Í¡Ä
¤Þ¤¡¤³¤ì¤â»þÂå¤Îή¤ì¤È¤¤¤¦¤³¤È¤Ç¡Ä¤È¤Ë¤â½ñ¤¯¤Ë¤âSTM8L¤Ë´Ø¤·¤Æ¤Ï
ºÇ¸å¤ÃÕû¤Ç°ì·ïµ»ö½ñ¤¤¤Æ¥¯¥í¡¼¥º¤È¤µ¤»¤Æ¤â¤é¤ª¤¦¤È¤ª¤â¤¤¤Þ¤¹¡Ä¡ª
¡üSTM32F4¤ÎHAL¤¸¤ã¤Ê¤¯¤ÆSPL¤¬¥¢¥Ã¥×¥Ç¡¼¥È¤·¤Æ¤¤¤¿¤¬¡Ä
2022ǯ¤ËHAL¥é¥¤¥Ö¥é¥ê¤¸¤ã¤Ê¤¯¤Æ¸Å¤ÎStandardPeripheralLibrary¤¬
¥¢¥Ã¥×¥Ç¡¼¥È¤·¤Æ¤¤¤¿¤è¤¦¤Ç¤¹¡ÄÆâÍÆ¤Ï¡Ä
;·×¤Ê¤³¤È¤¹¤ë¤Ê¡Á¡Á¡ª
GPIO¤Î¥ì¥¸¥¹¥¿¼þ¤ê¤ÏÃ×̿Ū¤À¤Ã¤¿¤Î¤Ç¤³¤³¤À¤±¸µ¤ËÌᤷ¤Æ¥¢¥Ã¥×¥Ç¡¼¥È
¤¤¤¿¤·¤Þ¤·¤¿¡Ä
¡üILI9341¤ò¥·¥ê¥¢¥ëÀܳ¤Çư¤«¤·¤¿ºÝ¤ËDeviceID¤òÆÉ¤ß½Ð¤¹ÊýË¡
10ǯÁ°¤Ë°ìÅÙµ»ö¤ò½ñ¤¤Þ¤·¤¿¤¬10ǯ¤Î»þ¤òͤ¨¤Æ³§Ëº¤ì¤Æ¤·¤Þ¤Ã¤Æ¤ë
¤è¤¦¤Ê¤Î¤Ç²þ¤á¤Æ¾Ü¤·¤¯²òÀ⤷¤è¤¦¤È»×¤¤¤Þ¤¹¡£
ILI9340,ILI9341,ILI9342¤ÎILITEKÀ½¤ÎTFT-LCD¥³¥ó¥È¥í¡¼¥é¤ÏDeviceID
¤ò¤½¤ì¤¾¤ì»ý¤Ã¤Æ¤ª¤ê¤½¤ì¤é¤ÎÆÉ¤ß½Ð¤·¥³¥Þ¥ó¥É¤Ï"0xD3"¤ò»ÈÍѤ·¤Þ¤¹¡£
Ìà¤âi8080¤Ê¤É¤Î¥Ñ¥é¥ì¥ë¤Ê¥Ç¡¼¥¿¥Ð¥¹¤ÎÆÉ½Ð¤·¤Ï¥Ç¡¼¥¿¥·¡¼¥È¤Î
Ä̤ê¤Ë½¾¤¨¤Ð´üÂÔ¤·¤Æ¤¤¤¿DeviceID(ILI9341¤Ê¤é0x9341)¤òÆÉ¤ß½Ð¤¹
¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤·¤«¤·¡¢SPI(°Ê²¼¥·¥ê¥¢¥ë)¥Ð¥¹Àܳ¤Î¾ì¹ç¤Ï²¿¸Î¤«
¤³¤ÎÄ̤ê¤Ë¤ä¤Ã¤Æ¤âÀäÂÐ¤ËÆÉ¤ß½Ð¤¹¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£
¤³¤ì¤Ë¤Ä¤¤¤Æ¤Ï10ǯ°Ê¾åÁ°¤«¤éÍÍ¡¹¤Ê¥³¥ß¥å¥Ë¥Æ¥£¤ÇÏÃÂ꤬¾å¤¬¤Ã¤Æ
¤ª¤ê¤Þ¤¹¤¬¥·¥ê¥¢¥ëÀܳ¤Ç¤ÏÆÈÆÃ¤Î¼ê½ç¤ò¤â¤Ã¤Æ¤·¤Ê¤¤¤ÈÆÉ¤ß¤À¤¹
¤³¤È¤¬¤Ç¤¤Þ¤»¤ó¡£
ILI934x·Ï¤Î¥³¥ó¥È¥í¡¼¥é¤Ï¥·¥ê¥¢¥ëÀܳ¤Ç¥ì¥¸¥¹¥¿¤ÎÃͤòÆÉ¤ß½Ð¤¹
¤¿¤á¤Ë¤Ï¥Ç¡¼¥¿¥·¡¼¥È̤µºÜ¤Î"undocumented"¤Ê¥ì¥¸¥¹¥¿¤Ë¥¢¥¯¥»¥¹
¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤¬RegisterReadIndex(0xD9)¤Ç¤¹¡ª
»È¤¤Êý¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£ReadID4¥³¥Þ¥ó¥É(0xD3)¤ò¼Â¹Ô¤·¤Æ¥·¥ê¥¢¥ë
Àܳ¤ÇDeviceID¤òÆÉ¤ß½Ð¤¹¼ê½ç¤Ç¤¹¡£
/**************************************************************************/☝¤³¤ó¤Ê´¶¤¸¤Ç¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò°ì¤Ä¤º¤Ä»ØÄꤷ¤ÆÆÉ¤ß¤À¤·¤Æ¤¤¤¤Þ¤¹¡£
/*!
Read ID ILI934x.
*/
/**************************************************************************/
static uint16_t ILI934x_rd_id(uint8_t cmd)
{
uint16_t val;
uint16_t temp;
ILI934x_wr_cmd(0xD9); /* SPI Register Read Command */
ILI934x_wr_dat(0x10); /* Read Mode Enable,1st Byte */
temp = ILI934x_rd_cmd(cmd); /* Dummy Read */
ILI934x_wr_cmd(0xD9); /* SPI Register Read Command */
ILI934x_wr_dat(0x11); /* Read Mode Enable,2nd Byte */
temp = ILI934x_rd_cmd(cmd); /* Dummy Read */
ILI934x_wr_cmd(0xD9); /* SPI Register Read Command */
ILI934x_wr_dat(0x12); /* Read Mode Enable,3rd Byte */
temp = ILI934x_rd_cmd(cmd); /* Upper Read */
ILI934x_wr_cmd(0xD9); /* SPI Register Read Command */
ILI934x_wr_dat(0x13); /* Read Mode Enable,4th Byte */
val = ILI934x_rd_cmd(cmd); /* Lower Read */
val &= 0x00FF;
val |= (uint16_t)temp<<8;
return val;
}
¡¡¤³¤Î¤è¤¦¤Ê¤«¤ó¤¸¤Ç¥·¥ê¥¢¥ëÀܳ¤Ç¤âDeviceID¤òÆÉ¤ß¤À¤»¤Þ¤¹¡£

¤Ê¤ó¤Ç¥Ç¡¼¥¿¥·¡¼¥È̤µºÜ¤Ê¤ó¤ÀYO¡ª¤È¤ª»×¤¤¤ÎÊý¤â¤¤¤é¤Ã¤·¤ã¤ë
¤Ç¤·¤ç¤¦¤¬¡¢¼Â¤Ï¶áǯ¤Ë¥ê¥Ë¥å¡¼¥¢¥ë¤µ¤ì¤¿¥Ç¡¼¥¿¥·¡¼¥È¤Ë¤Ï¤Á¤ã¤ó¤È
µºÜ¤µ¤ì¤Æ¤ä¤¬¤Ã¤¿¤ê¤·¤Þ¤¹¡£¤³¤ì¤ÏILI9342"C"¤Î¥Ç¡¼¥¿¥·¡¼¥È¤Ç¤¹¡£
¤â¤Á¤í¤óILI9342̵°õ¤Ç¤Ïµ½Ò¤¬¤¢¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£

¤Þ¤¿¡¢Æ±ÍͤΥ¢¥¯¥»¥¹ÊýË¡¤È¤·¤Æ¤ÏILI9486L¤âƱµ¡Ç½¤Î¥³¥Þ¥ó¥É¤¬Â¸ºß
¤·¤Æ¤ª¤ê¤Þ¤¹¡£¤Æ¤«"DGAMCTRL (Digital Gamma Control 2)"¤È¤«¤Ê¤Ã¤Æ¤Æ
¤Ç¤¿¤é¤á¤Ç¤á¤Ã¤Á¤ãŬÅö¤Ç¤¹¤Í¡Ä

¤µ¤é¤Ëº£Ç¯È½ÌÀ¤·¤¿¾×·â¤Î»ö¼Â¤Ç¤¹¤¬128x128¥µ¥¤¥º¤ò¼ç¤Ë¥µ¥Ý¡¼¥È¤¹¤ë
ILI9163·Ï¤Î¥³¥ó¥È¥í¡¼¥é¤â0xD9¤ò¼Â¹Ô¤¹¤ë¤ÈÉÔ²Äǽ¤À¤È»×¤ï¤ì¤Æ¤¤¤¿
¥·¥ê¥¢¥ëÀܳ¤ÎDeviceID¤òÆÉ¤ß½Ð¤·²Äǽ¤Ê¤³¤È¤ò³Îǧ¤·¤Þ¤·¤¿¡ª¡ª
¥½¡¼¥¹¥³¡¼¥É¤Ë¾åµ¤Î¤è¤¦¤ËÈ¿±Ç¤·¤Æ¤ª¤ê¤Þ¤¹¡ª
¤È¤¤¤¦´¶¤¸¤ÇÄê´üŪ¤Ë»ý¤Á¾å¤¬¤ëILI934x·Ï¤Î¥Í¥¿¤Ç¤¹¤¬¥·¥ê¥¢¥ëÀܳ¤Ç
¤³¤Î±Õ¾½¤ò»È¤¦¥·¡¼¥ó¤¬¶Ë¤á¤ÆÂ¿¤¤¤Î¤Ç¾ðÊó¤È¤·¤Æ¤·¤Ã¤«¤ê»Ä¤·¤Æ
¤ª¤³¤¦¤È»×¤¤¤Þ¤¹¡ª
ºÇ¤âºòº£¤ÏST7789Vx°ì²¤Ë¤À¤¤¤Ö²¡¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¤¬¡¼¡ª
¤³¤ì¤é¤ÎÀ®²Ìʪ¤Ï¼ç¤Ë¤ª¤¤Ñ¤Ë¤¢¤ëSTM32F4¤ÎFatFs°Ü¿¢ºîÎã¤Ë¼ý¢
¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£¥×¥í¥¸¥§¥¯¥È¤Î²¼µ¥É¥é¥¤¥Ð¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
./lib/display/drivers/src/ili934x.c(ILI9342¤ò½ü¤¯)
./lib/display/drivers/src/ili9342.c
./lib/display/drivers/src/ili9481.c
./lib/display/drivers/src/ili9163x.c
¡ü¿·±Õ¾½¥â¥¸¥å¡¼¥ë³¡¹Åо졪
±Õ¾½¥â¥¸¥å¡¼¥ë¤Ä¤Ê¤¬¤ê¤Ç¤â¤¦°ì·ï¤Ç¤¹¡£

͵פ·¤Ö¤ê¤Ç¤¹¤¬¤³¤ÎÁ°ST7789V2¤Ë¤âÂбþ¤·¤¿¤Ä¤¤¤Ç¤Ë¿·¤¿¤ËÇã¤Ã¤¿
Ãæ²ÚTFT±Õ¾½¥â¥¸¥å¡¼¥ë¤ò¤¤¤¯¤Ä¤«¾Ò²ð¤µ¤»¤Æ¤¤¤¿¤À¤¤Þ¤¹¡£

¤³¤Á¤é¤Ï¤Ê¤Ê¤Ê¤ó¤È5inch¤Ç540x960pixel¤Çi8080¥Ç¡¼¥¿¥Ð¥¹Âбþ¤È¤¤¤¦
º£¤Þ¤Ç¤ÇºÇÂ祵¥¤¥º¤Î±Õ¾½¥â¥¸¥å¡¼¥ë¤Ç¤¹¡ª¡ª¡ª¡ª¡ª
¥³¥ó¥È¥í¡¼¥é¤ÏNT35516¤È¤¤¤¦Éʼï¤Ç¤¹¡£
480x854¤¬º£¤Þ¤Ç¤ÎºÇÂ祵¥¤¥º¤À¤Ã¤¿¤Î¤ÇÂç¿Ê²½¤Ç¤¹¤Í¡Á

¤Ç¡¢Æ°¤«¤½¤¦¤È¤¹¤ë¤È·ë¹½Êʤ¬¤¢¤Ã¤¿¡Ä
¥Ç¡¼¥¿¥Ð¥¹¤¬³°Íè¥Î¥¤¥º¤Ë¼å¤¯¤Æ¤¹¤°Êø¤ì¤ë¤Î¤Ç¤Í¤à¤¤¤µ¤ó¤Î¤¤¤Ä¤â¤Î
¤Ë¹ç¤ï¤»¤ë¤Î¤Ë·ë¹½¶ìÏ«¤·¤Þ¤·¤¿¤¬¤Ê¤ó¤È¤«°ÂÄêÆ°ºî¤Ç¤¤ë¤è¤¦¤Ë
¤Ê¤ê¤Þ¤·¤¿¡£¤½¤ì¤Ë¤·¤Æ¤â540x960¤Ï¹¤¹¤®¤ë¡Ä

¤Ä¤¤¤Ë(ÁѱÀ¤Î¥³¥¹¥×¥ì¤ò¤·¤¿)¤¤¤Ê¤¤¤µ¤ó¤ÎÁ´¿È¤¬¸«Àڤ줻¤º¤Ë
ɽ¸½¤Ç¤¤ë¤è¤¦¤Ë¡ª¡ª¤ä¤Ã¤¿¡ª¡ª
¤È¤Ï¤¤¤¨ÀÅÅÅÀ¥¿¥Ã¥Á¥Ñ¥Í¥ë¤¬ÁõÃ夵¤ì¤¿¥â¥Ç¥ë¤¬¤Þ¤ÀAliexpress¤Ë
Åо줷¤Æ¤Ê¤¤¤Î¤Ç¥á¥¤¥ó¤Ç»ÈÍѤ¹¤ëÃʳ¬¤Ç¤Ï¤Ê¤¤¤Ç¤¹¡Ä
¤ä¤Ã¤Ñ¤·ILI9806G¤Ê¤³¤¤¤Ä¤¬°ìÈֻȤ¤¤ä¤¹¤¤¤Ç¤¹¤Í¡Ä¡ª

¤ª¼¡¤ÏHX8363B¤ò¥³¥ó¥È¥í¡¼¥é¤Ë»ý¤Ä3.97inch,480x800¤Ê¸½ºß¤Ç¤Ï
ÄêÈÖ¥µ¥¤¥º¤Î±Õ¾½¤Ç¤¹¡£¤³¤Á¤é¤â¥¿¥Ã¥Á¥Ñ¥Í¥ë¤Ê¤·¤Ç¤¹¡£
¤Æ¤¤¤¦¤«¤Ê¤ó¤Ê¤ó¤À¿¿¤óÃæ¤Î¥·¡¼¥ë¤Ï¡£
¤³¤Î¥³¥ó¥È¥í¡¼¥é¤Ï¤Á¤ç¤Ã¤ÈÊʤ¬¤¢¤Ã¤Æ8/16bit¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
¤ò·èÄꤹ¤ëÀßÄê¤Ï³°Éô¤Ë½Ð¤ë¥Ô¥ó¤Ç¤Ï¤Ê¤¯¥ì¥¸¥¹¥¿¤ËÆþ¤ì¤ëÃͤǷèÄê
¤·¤Þ¤¹¡£¤³¤ì10ǯ°Ê¾åÁ°¤Ë»ÈÍѤ·¤¿S1D19122¤Ë»÷¤Æ¤Þ¤¹¤Í¡Á

ư¤«¤·¤¿¤È¤³¤í¤Ç¤¹¡£
¤Þ¤¡²Ä¤â¤Ê¤¯ÉԲĤâ¤Ê¤¯¤È¤¤¤Ã¤¿¤È¤³¤í¤Ç¤¹¤Í¡Á
¤ä¤Ã¤Ñ¤·ILI9806G¤Ê¤³¤¤¤Ä¤¬°ìÈֻȤ¤¤ä(r

¤³¤Á¤é¤ÏR61408¤¬»ÈÍѤµ¤ì¤¿3.97inch,480x800¤Î¤â¤Î¤Ç¤¹¡£
FT5216¤ÎÍÆÎÌÀ¥¿¥Ã¥Á¥Ñ¥Í¥ë¥³¥ó¥È¥í¡¼¥é¤¬¤Ä¤¤¤¿¥¿¥Ã¥Á¥Ñ¥Í¥ë
¤Ä¤¤Ë¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡ù

ºÇ¶á¤ËÈÎÇ䤵¤ì¤Æ¤¤¤ëÃæ²Ú±Õ¾½¤Î²¼ÂÌ´ðÈĤϥѥ¿¥ó¤Ç¤ª³¨ÉÁ¤¤·¤¿¤ê¤¬
¤Ê¤¯¤Ê¤Ã¤Æ»¦É÷·Ê¤Ê¤Î¤Ç¤Á¤ç¤Ã¤È¼ä¤·¤¤¤Ç¤¹¤Í¡Ä°ì±þRGB/8bit/16bit
¤½¤·¤ÆI2C¤Þ¤Ç»ÈÍѲÄǽ¤Ç¤¹¡£R61408¤Î¥·¡¼¥ë¤Ï»ä¤¬Å½¤ê¤Þ¤·¤¿¡£

ư¤«¤·¤¿¤È¤³¤í¡£
¤«¤Ê¤êȯ¿§¤¬Îɤ¤¤Ç¤¹¤Í¡Á
¤Ç¤â¤ä¤Ã¤Ñ¤·ILI9806G¤Ê¤³¤¤(ry


¤ó¤Ç¤â¤Ã¤Æ10ǯ¤¯¤é¤¤¤Þ¤¨¤Î¤ê¤Ù¤ó¤Â¤Ç¤¹¤¬NT35510¤Î¤Þ¤È¤â¤ÊÅÛ¤¬
¼ê¤ËÆþ¤ê¤Þ¤·¤¿¤Î¤Çư¤«¤·¤Æ¤ß¤Þ¤·¤¿¡£
¥µ¥¤¥º¤ÏÄêÈÖ¤Î3.97inch,480x800¤Ç¤¹¡£

¤³¤Á¤é¤âȯ¿§¤¬¤Ê¤«¤Ê¤«¤Ç¤·¤¿¡Ä°ÊÁ°¤Ï¤Þ¤È¤â¤Ëɽ¼¨¤Ç¤¤Ê¤«¤Ã¤¿¤Î¤Ç
10ǯ±Û¤·¤Ë¤ê¤Ù¤ó¤Â¤Ç¤¤¿¤«¤ó¤¸¤Ç¤¹¤Í¡Ä!

ºÇ¸å¤ËRM68180¤¬»ÈÍѤµ¤ì¤¿3.97inch,480x800¤Î¥â¥¸¥å¡¼¥ë¤Ç¤¹¡£
FPC¥³¥Í¥¯¥¿Àܳ¤Ç¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï8bit¤È¤¤¤¦Â®ÅÙŪ¤Ë¶ì¤·¤¤
¤â¤Î¤Ç¤¹¤¬¤Ï¤Æ¤µ¤Æ

¤«¤Ê¤ê¶ìÏ«¤·¤Þ¤·¤¿¤¬²¿¤È¤«É½¼¨¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
RM68120¤Î¥³¡¼¥É¤È¤Û¤ÜƱ¤¸¤Ê¤Î¤Çrm68120.c¤ÈƱµï¤·¤Þ¤·¤¿¡£
¤È¤¤¤¦¤ï¤±¤ÇºÇ¶áµ×¤·¤Ö¤ê¤ËÆþ¼ê¤·¤¿TFT±Õ¾½¥â¥¸¥å¡¼¥ë¤ò°ìµ¤¤Ë
¾Ò²ð¤·¤Þ¤·¤¿¤¬¸½»þÅÀ¤Ç¤Ï»È¤¤¤ä¤¹¤µ¡¢°ÂÄêÀ¡¢É½¼¨Îΰè¤ÎÌ̤ò
´Õ¤ß¤ë¤ÈILI9806G¤Ê¤³¤¤¤Ä¤¬Å´ÈĤȸÀ¤ï¤¶¤ë¤òÆÀ¤Þ¤»¤ó¤Í¡£
NT35516¤Î¤ä¤Ä¤¬¤â¤¦¤Á¤ç¤Ã¤È´èÄ¥¤Ã¤Æ¤¯¤ì¤¿¤é¤è¤¤¤Î¤Ç¤¹¤¬¡¢
¤³¤ì¤«¤éÀè¤âÅöʬ¤Î´Ö¤ÏILI9806G»È¤Ã¤¿¤ä¤Ä¤Î¤ªÀ¤Ïäˤʤꤽ¤¦¤Ç¤¹¡£
STM32L5¤ò»È¤Ã¤Æ¤ß¤ë3 -OCTO-SPI¤ÇQUAD-SPIROM¤ò»È¤ª¤¦-
¡üQUAD-SPIÀܳNORFLASH-ROM¤ò»È¤¤¤³¤Ê¤»!
FONTX2¥Õ¥¡¥¤¥ë¤Ê¤É¤ÎÂçÍÆÎ̤Υǡ¼¥¿¤ÏSTM32Åù¤ÎÂ絬ÌÏ¥Þ¥¤¥³¥ó¤È
¤¤¤¨¤É¤â¥Õ¥é¥Ã¥·¥åÍÆÎ̤òÈó¾ï¤Ë¤Ò¤ÃÇ÷¤·¤Þ¤¹¡£
°ÊÁ°¤«¤é¤Ï¤½¤¦¤¤¤Ã¤¿¥Ç¡¼¥¿¤Ï³°ÉÕ¤±¤ÎQSPI-ROM¤Ë³ÊǼ¤·¡¢¤½¤³¤«¤é
¥¢¥¯¥»¥¹¤¹¤ë¤È¤¤¤Ã¤¿¼êË¡¤¬ÄêÈ֤ȤʤäƤª¤ê¤Þ¤¹¡£
STM32L5¤Ç¤Ï¿®¹æÀþ¤òºÇÂç8ËÜ»ý¤Ä¥¯¥í¥Ã¥¯¥É¥·¥ê¥¢¥ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
¤¤¤ï¤æ¤ë"OCTO-SPI"¤ò¤â¤Á¤µ¤é¤ËÍøÊØÀ¤¬¹â¤Þ¤Ã¤Æ¤ª¤ê¤Þ¤¹¡ª
¤³¤ÎOCTO-SPI¤ò»È¤Ã¤ÆQSPI-ROM¤ÈÀܳ¤·Æâ¢¥Õ¥é¥Ã¥·¥å¥á¥â¥ê¤Î¤è¤¦¤Ë
»È¤¨¤ëMemoryMappedMode¤ÇÆÉ¤ß½Ð¤·¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡ª
¡ü¤â¤Ï¤äÄêÈÖ¡ùWinbond¤ÎW25Q128JVSIQ
Á°¡¹²ó¤«¤é¤Î¾Ò²ð¤ÎÄ̤ꡢ¤Í¤à¤¤¤µ¤ó¤ÏÆþ¼ê¤âÍÆ°×¤Ç½½Ê¬¤ÊÍÆÎÌ(16MB)¡¢
¹â®¤Ê¥¯¥í¥Ã¥¯(133MHz)¤Ç¥Ç¥Õ¥©¥ë¥È¤ÇQUAD-SPI¥â¡¼¥É¤Ë¤Ê¤Ã¤Æ¤¤¤Æ
¥³¥Þ¥ó¥É¤¬¾Êά½ÐÍè¤Æ°·¤¤¤ä¤¹¤¤W25Q128JVSIQ¤ò»ÈÍѤ·¤Þ¤·¤¿¡£
W25Q¤Î¥·¥ê¡¼¥º¤Ë¤Ï¤¤¤í¤¤¤í¤¢¤ê¤Þ¤¹¤¬ËöÈø"IQ"¤Î¤â¤Î¤Ï¾å¤Ç¤â
½ñ¤¤¤¿Ä̤êºÇ½é¤Ã¤«¤éQUAD-SPI¥â¡¼¥É¤Ë¤Ê¤Ã¤Æ¤ª¤êº£¤«¤é¾Ò²ð¤¹¤ë
¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤ÇÅꤲ¤ë¥³¥Þ¥ó¥É¤¬¤¤¤¯¤Ä¤«¾Êά½ÐÍè¤Æ³Ú¤Ç¤¹¡£
digikey¤ämouser¤Ç¹ØÆþ¤ÎºÝ¤Ï¤¦¤Ã¤«¤ê°ã¤¦¤ä¤Ä¤òÇã¤ï¤Ê¤¤¤è¤¦¤Ë
·¿È֤ˤÏÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
¡üOCTO-SPI¤òMemoryMappedMode¤Ç»ÈÍѤ¹¤ë¤¿¤á¤Î¥³¡¼¥É¼ê½ç
STM32L5¤ËÅëºÜ¤µ¤ì¤Æ¤¤¤ëOCTO-SPI¤ÏSTM32F7¤Ê¤É¤Ë¤¢¤Ã¤¿QUAD-SPI
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤«¤é¤µ¤ì¤Ë³ÈÄ¥¤µ¤ì¡¢ÆÉ¤ß½Ð¤·¤Î¤Û¤«¤Ë½ñ¤¹þ¤ß¤â
¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£´ðËÜŪ¤ÊÀßÄê¤Îή¤ì¤ÏQUAD-SPI¤Îº¢¤È¤Û¤Ü
Ʊ¤¸¤Ç¤¹¤¬OCTO-SPI¤Ê¤é¤Ç¤Ï¤ÎÀßÄê¤â¤¢¤ë¤Î¤ÇÃí°Õ¤·¤Þ¤·¤ç¤¦¡£
¢¤Þ¤º¤ÏI/OÀßÄê¤Ç¤¹¡£
/**************************************************************************/
/*!
@brief OCTO-SPI GPIO Configuration.
@param None.
@retval None.
*/
/**************************************************************************/
void OSPI_IoInit_If(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
/* Initializes the peripherals clock */
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_OSPI;
PeriphClkInit.OspiClockSelection = RCC_OSPICLKSOURCE_SYSCLK;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
for(;;);
}
/* Peripheral clock enable */
__HAL_RCC_OSPI1_CLK_ENABLE();
/* Alternate GPIO enable */
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/* PE12 as OSPI_IO0 */
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
/* PB0 as OSPI_IO1 */
GPIO_InitStruct.Pin = GPIO_PIN_0;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* PE14 as OSPI_IO2 */
GPIO_InitStruct.Pin = GPIO_PIN_14;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
/* PE15 as OSPI_IO3 */
GPIO_InitStruct.Pin = GPIO_PIN_15;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
/* PB10 as OSPI_CLK */
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* PA2 as OSPI_NCS */
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
¤³¤ì¤ÏNUCLEO-L552ZE-Q¤«¤é½Ð¤¿QUAD-SPI¤Î¤ËÂбþ¤·¤¿¤â¤Î¤Ç¤¹¡£
OCTO-SPI¤Ê¤Î¤Ë8ËÜÁ´Éô»È¤ï¤Ì¤§¤Î¤«¤È»×¤¤¤Ç¤·¤ç¤¦¤¬¤³¤ì¤ÏNUCLEO
¤¬°ú¤½Ð¤·¤Æ¤ë¤¬¤½¤¦¤Ê¤Ã¤Æ¤ë¤«¤é¤½¤ì¤Ë½¾¤Ã¤¿¤ï¤±¤Ê¤Î¤Ç¡¼
¢¤ª¼¡¤ÏOCTO-SPI¤ÎÀßÄê¤Ç¤¹¡£
/**************************************************************************/
/*!
@brief Configure OCTO-SPI as Memory Mapped Mode.
Winbond W25Q128JVSIQ specific setting.
* Address size is 24bit(16MBytes).
* Initially sets QUAD-MODE(not need quadmode command).
* MAX 133MHz CLK.
* Support "XIP",thus suitable for MemoryMappedMode.
@param None.
@retval None.
*/
/**************************************************************************/
void Set_OSPI_MemoryMappedMode(void)
{
OSPI_RegularCmdTypeDef sCommand = {0};
OSPI_MemoryMappedTypeDef sMemMappedCfg = {0};
uint8_t reg_data =0;
/* Initialize OCTO-SPI I/O */
OSPI_IoInit_If();
/* Initialize OCTO-SPI */
hospi.Instance = OCTOSPI1;
hospi.Init.FifoThreshold = 1;
hospi.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;
hospi.Init.MemoryType = HAL_OSPI_MEMTYPE_MICRON;
hospi.Init.DeviceSize = 24; /* 128Mbit=16MByte=2^24 W25Q128JVSIQ */
hospi.Init.ChipSelectHighTime = 2; /* 2ClockCycle(18nSec@110MHz) Need for W25Q128JVSIQ >10nSec@read */
hospi.Init.FreeRunningClock = HAL_OSPI_FREERUNCLK_DISABLE;
hospi.Init.ClockMode = HAL_OSPI_CLOCK_MODE_0;
hospi.Init.WrapSize = HAL_OSPI_WRAP_NOT_SUPPORTED;
hospi.Init.ClockPrescaler = 2; /* 110MHzMAX/2 = 55MHz(MAX OSPI-CLK:90MHz) */
hospi.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_HALFCYCLE;
hospi.Init.DelayHoldQuarterCycle = HAL_OSPI_DHQC_DISABLE;
hospi.Init.ChipSelectBoundary = 0;
hospi.Init.DelayBlockBypass = HAL_OSPI_DELAY_BLOCK_BYPASSED;
hospi.Init.Refresh = 0;
if (HAL_OSPI_Init(&hospi) != HAL_OK)
{
for(;;);
}
/* Enable Reset --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_COMMON_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytes = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x66; /* Reset Enable W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_DATA_NONE;
sCommand.DummyCycles = 0;
sCommand.NbData = 0;
if (HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}
/* Reset Device --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_COMMON_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytes = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x99; /* Reset W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_DATA_NONE;
sCommand.DummyCycles = 0;
sCommand.NbData = 0;
if (HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}
/* Enter Quad-SPI Mode --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_COMMON_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytes = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x31; /* Set Status2 W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.DummyCycles = 0;
sCommand.NbData = 1;
reg_data = 0x02; /* Enable QuadI/O Mode */
if (HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}
if (HAL_OSPI_Transmit(&hospi, ®_data, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}
/* Enter MemoryMappedMode --------------------------- */
/* Read Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_READ_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_4_LINES;
sCommand.AlternateBytes = 0xFF; /* Need for Fast Read QUAD W25Q128JVSIQ */
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_8_BITS;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0xEB; /* Fast Read QUAD W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_4_LINES;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_DATA_4_LINES;
sCommand.DummyCycles = 4; /* DUMMY 4Cycle for Fast Read QUAD W25Q128JVSIQ */
sCommand.NbData = 0;
if(HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}
/* Write Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_WRITE_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytes = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x32; /* Page Write QUAD W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_1_LINE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_DATA_4_LINES;
sCommand.DummyCycles = 0;
sCommand.NbData = 0;
if(HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}
/* Set OCTO-SPI as MemoryMappedMode */
sMemMappedCfg.TimeOutActivation = HAL_OSPI_TIMEOUT_COUNTER_DISABLE;
sMemMappedCfg.TimeOutPeriod = 0;
if(HAL_OSPI_MemoryMapped(&hospi, &sMemMappedCfg) != HAL_OK)
{
for(;;);
}
}
ή¤ì¤È¤·¤Æ¤Ï¥ê¥»¥Ã¥È͸ú->¥ê¥»¥Ã¥È->¥¯¥¢¥Ã¥ÉI/O¥â¡¼¥É͸ú->
¥¯¥¢¥Ã¥É¹â®ÆÉ¤ß½Ð¤·¥³¥Þ¥ó¥É->¥¯¥¢¥Ã¥É¥»¥¯¥¿½ñ¤¹þ¤ß¥³¥Þ¥ó¥É
->HAL¤ÎMemoryMappedMode°Ü¹Ô´Ø¿ô¸Æ¤Ó½Ð¤·
¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£
"¥¯¥¢¥Ã¥ÉI/O¥â¡¼¥É͸ú"¤ÏW25Q128JVSIQ»È¤¦¤Ê¤éËÜÍèÉÔÍפǤ¹¤¬
"ǰ¤Î¤¿¤á"ÆÍ¤Ã¹þ¤ó¤É¤¤Þ¤·¤¿¡Ä°ì±þ¤Ê¤¯¤Æ¤âưºî¤·¤Þ¤¹¡£
Ãí°ÕÅÀ¤Ç¤¹¤¬OCTO-SPI¤Ï½ñ¤¹þ¤ß¤âMemoryMappedMode¤¬»ÈÍѲÄǽ¤Î°Ù¡¢
¥¯¥¢¥Ã¥ÉÆÉ¤ß½Ð¤·¥³¥Þ¥ó¥É¤Î¼¡¤Ë¥»¥¯¥¿½ñ¤¹þ¤ß¥³¥Þ¥ó¥É¤ÎÀßÄ꤬
ɬ¿Ü¤Ë¤Ê¤ê¤Þ¤¹¡ª¡ª

¤Ê¤¼¤½¤¦¤Ê¤Ã¤Æ¤¤¤ë¤«¤È¤¤¤¦¤ÈHAL¤Î´Ø¿ôÆâ¤Ç½ñ¤¹þ¤ß¥³¥Þ¥ó¥É¤Î
ÀßÄê¤Þ¤ÇÍ׵ᤷ¤Æ¤¤ä¤¬¤ë¤«¤é¤Ç¤¹(Ê̤˺£²ó½ñ¤¹þ¤ßÍפé¤ó¤Î¤Ë☠)
¤³¤ì¤âÀßÄꤷ¤Ê¤¤¤ÈÀè¤Ë¿Ê¤á¤Þ¤»¤ó¡ª
¡üưºî¤·¤Æ¤ë¤È¤³¤í

MemoryMappedMode¤ÇÀßÄꤷ¤¿¥¢¥É¥ì¥¹¤ÏSTM32F7¤Î¤Ç¤ä¤Ã¤¿»þ¤ÈƱ¤¸¤¯
0x90000000¤«¤é¤È¤Ê¤ê¤Þ¤¹¤Î¤Ç²áµî¤Î¥ê¥½¡¼¥¹¤¬ÍøÍѤǤ¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤ó¤Î»È¤¤Êý¤Ç¤ÏFONTX2¥Õ¥¡¥¤¥ë¤ÎAnk¤ÎÊý¤ò0x90000000¡¢
Sjis-Kanji¥Õ¥©¥ó¥È¤ÎÊý¤Ï0x90010000¤«¤é»²¾È¤·¤Æ¤ª¤ê¤Þ¤¹¡£
Ank¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤Ï¤É¤ó¤Ê¤Ë¤Ç¤«¤¯¤È¤â65536byte°Ê¾å¤Ë¤Ê¤é¤Ê¤¤
¤À¤í¤¦¤È¤¤¤¦ÂÇ»»¤Ç¤³¤Î¥ª¥Õ¥»¥Ã¥ÈÃͤòÀßÄꤷ¤Æ¤Þ¤¹¡£

¤³¤ó¤Ê´¶¤¸¤ÇFONTX2(Á´³Ñ&Ⱦ³Ñ)¥Õ¥¡¥¤¥ë¤ò»Å¹þ¤ó¤ÀW25Q128JVSIQ¤«¤é
Æâ¢¥Õ¥é¥Ã¥·¥å¤ÈÊѤï¤é¤Ê¤¤´¶³Ð¤Ç¥Ç¡¼¥¿¤òÆÉ¤ß½Ð¤·É½¼¨¤¬¤Ç¤¤Þ¤·¤¿¡£
»ÈÍѤ·¤¿¥Õ¥©¥ó¥È¤Ï¾®²Æ¥Õ¥©¥ó¥È¤ò12pt¤ÎFONTX2¤ËÊÑ´¹¤·¤¿¤â¤Î¤Ç¤¹¡£
STM32L5¤ÎOCTO-SPI¤ÏÌ¿Îᥥã¥Ã¥·¥å¤À¤±¤Ç¥Ç¡¼¥¿¥¥ã¥Ã¥·¥å¤Ï̵¤¤
¤Ç¤¹¤¬Ê¸»úɽ¼¨¤äÁàºî´¶¤ËÆÃ¤Ë¤â¤¿¤Ä¤¤¤¿´¶¤¸¤Ï¤·¤Æ¤Þ¤»¤ó¤Í¡£


¥Ç¥Ð¥Ã¥¬¤Ç0x90000000ÈÖÃϤòɽ¼¨¤·¤Æ¤ß¤Þ¤·¤¿¡£
MemoyMappedMode͸ú¸å¤ÏÆâ¢¥Õ¥é¥Ã¥·¥å¤ÈƱ¤¸¤è¤¦¤Ë¥Ç¥Ð¥Ã¥¬¤Ç
ÆâÉô¤Î¥Ç¡¼¥¿¤ò»²¾È¤Ç¤¤Æ¤Þ¤¹¤Í¡£
¡ü¤È¤³¤í¤Ç¤É¤¦¤ä¤Ã¤ÆQSPI-ROM¤Ë¥Ç¡¼¥¿½ñ¤¯¤Î¡©
¡Äº£²ó¤Îµ»ö¤Ï¤³¤ì¤¬ºÇÂç¤ÎÆñ´Ø¤Ç¤¹¡Ä¡ª
OpenOCD¤Ç¤ÏDiscovery·Ï¤Î¥Ü¡¼¥É¤Ç¤ÏI/F¤Î¤âQSPI-ROM¤ÎÉʼï¤â
·è¤áÂǤÁ¤Î¤¿¤á¤ËQSPI-ROM¤ÎÆÉ¤ß½ñ¤¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬
NUCLEO·Ï¤Î¤ä¤Ä¤Ï¤ϽФƤ¤¤ë¤â¤Î¤Î¤½¤ÎÀè¤Ë²¿¤¬¤Ä¤Ê¤¬¤ë¤«¤Ï
¤ï¤«¤é¤Ê¤¤¤Î¤Ç¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤â¤Î¤Ï²¿¤Ë¤â¤¢¤ê¤Þ¤»¤ó¡£
¤·¤¿¤¬¤Ã¤ÆOpenOCD¤Îmmw¤Î¥³¥Þ¥ó¥É¤Ç¤½¤ì¤¾¤ì¤ÎROM¥Ç¥Ð¥¤¥¹¸þ¤±¤Ë
¾å¤Ç½ñ¤¤¤¿¥³¡¼¥É¤ò16¿Ê¿ôʤ٤Ƥ¬¤à¤Ð¤Ã¤ÆÄêµÁ¤·¤Æ¤¤¤¯¤·¤«¤Ê¤¤¤Î
¤Ç¤¹¤¬¤Í¤à¤¤¤µ¤ó¤Ï¤½¤ó¤Ê¤³¤È¤ä¤ëµ¤ÎϤ¬¤Ê¤¤¤Î¤Ç¡Ä
Jtagkey2¤ÈSPI-ROM½ñ¤¹þ¤ß¥×¥í¥°¥é¥à"Flashom"¤Ë¤ÆFONTX2¥Ç¡¼¥¿¤ò
½ñ¤¹þ¤à¤³¤È¤Ë¤·¤Þ¤·¤¿¡£
»ÈÍѤ¹¤ë¥Õ¥©¥ó¥È¤Ï12x12px¤Î¾®²Æ¥Õ¥©¥ó¥È¤Ç¤¹¡£
Ank¤ÏKONATHN12.FNT¤ò¡¢S-Jis¤ÎKanji¤ÏKONATZN12.FNT¤ò»ÈÍѤ·¤Þ¤¹¡£
¾åµ¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¡¢»ä¤ÎL5¥×¥í¥¸¥§¥¯¥È¤Î²¼µ¥Ç¥£¥ì¥¯¥È¥ê¤ò
»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
./lib/FONTX2/inc/fonts/KONATSU
¢¨¾®²Æ¥Õ¥©¥ó¥È¤Ë¤Ä¤¤¤Æ¤ÏTTF¥Õ¥¡¥¤¥ë¤ÇÄ󶡤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£
º£²ó¤Ï¤¢¤é¤«¤¸¤áFONTX2¥³¥ó¥Ð¡¼¥¿¤ÇTTF->FONTX2·Á¼°¤ËÊÑ´¹
¤·¤ÆÁ´³Ñ/Ⱦ³Ñ¤È¤â»ÈÍѤ·¤Æ¤ª¤ê¤Þ¤¹¡£


¤Þ¤º¤ÏSPI-ROM¤Îǧ¼±¤ÈÆÉ¤ß½Ð¤·¡£¤Á¤ã¤ó¤Èǧ¼±¤µ¤ì¤Æ¤¤¤ë¤Î¤ò³Îǧ¡£
¤Ä¤¤¤Ç¤ËÆÉ¤ß½Ð¤·¤¿¥Ç¡¼¥¿¤Ï¸å¤Ç»ÈÍѤ¹¤ë¤Î¤Çbin·Á¼°¤ÇÊݸ¤·¤Þ¤¹¡£


JtagKey2(¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ëFT2232H)¤ÎSCK¤ÏºÇÂç30MHz¤Î¥¹¥Ô¡¼¥È¤Ê¤Î¤Ç
ÇÛÀþĹ¤Ï¤Ê¤ë¤Ù¤¯Ã»¤¯¤·¤Þ¤·¤ç¤¦¡£5cm°Ê²¼¤À¤È¤Þ¤ºÌäÂê¤Ê¤¤¤Ç¤¹¡£
»Äǰ¤Ê¤¬¤é¤²¤¿¥²¥¿´ðÈĤÈNUCLEO´ðÈĤò¹çÂΤ·¤¿¾õÂ֤ǤϤޤȤâ¤Ëǧ¼±
½ÐÍè¤Ê¤«¤Ã¤¿¤Î¤ÇNUCLEO¤«¤é5V¤À¤±ÇÒ¼Ú¤·¤ÆW25Q128JVSIQ¤È°ìÂаì¤ÇÇÛÀþ
¤¹¤ë·Á¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ê¤ª¡¢CS¤Ï¥×¥ë¥¢¥Ã¥×ɬ¿Ü¤Ê¤Î¤Ç¤¹¤¬¤Í¤à¤¤¤µ¤ó¤Ï
ǰ¤Î¤¿¤áCLK½ü¤¯¤¹¤Ù¤Æ¤ÎI/O¤ò22kohm¤Ç¥×¥ë¥¢¥Ã¥×¤·¤Æ¤Þ¤¹¡£
°ìÊýCLK¤ÏSDMMC¤ÈƱ¤¸¤¯Ä¾Îó½ªÃ¼Äñ¹³¤ò˺¤ì¤º¤Ë¡ª¡ª
¤Í¤à¤¤¤µ¤ó¤ÏSDMMC¤ÈƱ¤¸33ohm¤òľÎó½ªÃ¼¤È¤·¤Æ»ÈÍѤ·¤Æ¤Þ¤¹¡£
¤ª¼¡¤Ï½ñ¤¹þ¤ßÍѥХ¤¥Ê¥ê¤ÎºîÀ®¡£
¤Í¤à¤¤¤µ¤ó¤ÎÃΤë¸Â¤ê¤Ç¤ÏFlashrom¤Ï¥¢¥É¥ì¥¹¤ò¥ª¥Õ¥»¥Ã¥È»ØÄꤷ¤Æ
°ìÉô¤ÎÎΰè¤À¤±¤ò½ñ¤¹þ¤à¤³¤È¤¬¤Ç¤¤º¡¢Á´Îΰè°ìµ¤¤Ë½ñ¤¹þ¤ß¤·¤Ê¤¤¤È
¤¤¤±¤Ê¤¤¤Î¤ÇÀè¤ËÆÉ¤ß½Ð¤·¤¿bin¥Õ¥¡¥¤¥ë¤òÍøÍѤ·¤Æ¤½¤³¤ËFONTX2¥Õ¥¡¥¤¥ë
¤ò¾å½ñ¤¤¹¤ë·Á¤ÇÇÛÃÖ¤·FONTX2¤ò»Å¹þ¤ó¤ÀROM¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£
¥Ð¥¤¥Ê¥êÊÔ½¸¥×¥í¥°¥é¥à"Stirling"¤ò¶î»È¤·¤Æ0x0000000¤ËANK¥Õ¥©¥ó¥È¤ò
0x00010000¤ËKanji¥Õ¥©¥ó¥È¤ò¤½¤ì¤¾¤ì¾å½ñ¤¥â¡¼¥É¤Ç¥³¥Ô¥ÚÇÛÃÖ¤·¤Þ¤¹¡£
¥ª¥Õ¥»¥Ã¥È¤Ï1¥Ð¥¤¥È¤Ç¤â¤º¤ì¤Ê¤¤¤è¤¦¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

Ank¤ÏÇÛÃÖ¤µ¤ì¤ë¤È¤³¤ó¤Ê´¶¤¸

Kanji¤Ï¤³¤ó¤Ê¤«¤ó¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£

Stirling¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×ɽ¼¨¤À¤È¥Ð¥¤¥Ê¥ê¥¤¥á¡¼¥¸¤Ï¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£
¤Þ¤À¤Þ¤À°ìÇեǡ¼¥¿µÍ¤á¹þ¤á¤Þ¤¹¤Í¡£

¤½¤·¤Æ½ñ¤¹þ¤ß¡£JtagKey2¤ÈFlashrom¤ò»ÈÍѤ·¤¿ºÝ¤ÏÄ̾ï¤ÎSPI¤Ç
½ñ¤¹þ¤à¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤¬W25Q128JVSIQ¤Ï¥»¥¯¥¿½ñ¤¹þ¤ßÂбþ¤Ê¤Î¤Ç
16MByte¤â¤¢¤ëÍÆÎ̤Ǥâ2ʬ¤â¤«¤«¤é¤º½ª¤ï¤Ã¤Á¤ã¤¤¤Þ¤¹¡£

¤Í¤à¤¤¤µ¤ó¤Î¸ø³«¤·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Ç¤Ï°ì±þºîÀ®ºÑ¤ß¤ÎQSPI-ROM
¥¤¥á¡¼¥¸(128QVFONT.bin)¤òźÉÕ¤·¤Æ´Êñ¤Ê»ÈÍѼê½ç¤â½ñ¤¤¤Æ¤Þ¤¹¤Î¤Ç
¿ì¶¸¤ÊÊý¤Ï¤´»²¹Í¤Ë¡Ä¡£
¤Þ¤¡»ä¤Î¤Ö¤í¤°ÉáÃʤ«¤é¸«¤é¤ì¤Æ¤ëÊý¤Ï³Ú¾¡¤À¤È»×¤¤¤Þ¤¹¡£
¤½¤ó¤Ê¤ï¤±¤ÇSTM32H5¤«¤é¤ä¤ëͽÄê¤À¤Ã¤¿OCTO-SPI¤Ç¤·¤¿¤¬L5¤Ç¤â¤¦¤Þ¤¯
»È¤¤¤³¤Ê¤¹¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡ª
L5¤Ç¤ä¤ê¤¿¤¤¤³¤È¤Ï°ìÄ̤êÁ´Éô¤ä¤êÀڤ俤ΤǤ¤¤¤´¶¤¸¤ÇSTM32H5¤Ø¤È
·Ò¤²¤Æ¹Ô¤¤¿¤¤¤È¤ª¤â¤¤¤Þ¤¹¡ª¡ª
STM32L5¤ò»È¤Ã¤Æ¤ß¤ë2 -FatFs¤½¤Î¾¤Î¼ÂÁõ-
¡ü¤¤¤Ä¤â¤Î¤ä¤Ä¤ò¼ÂÁõ¤·¤è¤¦
Á°²ó¤Ï144PinÈÇNUCLEO´ðÈĤβ¼ÂÌ´ðÈĤΥӥ¸¥å¥¢¥ë¤À¤±¾Ò²ð¤·¤Þ¤·¤¿¤¬¡¢
º£²ó¤Ï¤½¤ì¤òư¤«¤¹¤¿¤á¤Î¥Õ¥¡¡¼¥à¥¦¥¨¥¢¤ÎÍ×½ê¤ò¾Ò²ð¤·¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤ó¤Î"¤¤¤Ä¤â¤Î"¤³¤ÈChaN»Õ¤ÎFatFs¼ÂÁõ¤òÃæ¿´¤È¤·¤Æ¤ª¤ê¤Þ¤¹¡£
°Ê²¼¡¢STM32L5-NUCLEO¤ÎFatFs¼ÂÁõÎã¤Î¥×¥í¥¸¥§¥¯¥È¤ÎÍ×ÅÀ¤òÁߤ¤Å¦¤ó¤Ç
²òÀ⤷¤Æ¤¤¤¤¿¤¤¤È»×¤¤¤Þ¤¹¡£
¡üGCC¥Ó¥ë¥É¤Î¤¿¤á¤ÎCortex-M33¸þ¤±¥ª¥×¥·¥ç¥ó
À褺¤Ïmakefile¤ò¸«¤Æ¤¤¤¿¤À¤¤¤¿¤é¤ªÊ¬¤«¤ê¤È»×¤¤¤Þ¤¹¤¬Cortex-M33¤Ï
´ðËÜŪ¤ËCortex-M4F¤Î¿Ê²½ÈǤȻפäÆÄº¤±¤¿¤é¤è¤¤¤È»×¤¤¤Þ¤¹¡£
GCC¥³¥ó¥Ñ¥¤¥é¤ËÍ¿¤¨¤ëCortex-M33¥³¥¢¸þ¤±¥ª¥×¥·¥ç¥ó¤Ï°Ê²¼¤Ë¤Ê¤ê¤Þ¤¹¡£
-mcpu=cortex-m33 -mtune=cortex-m33 -mfix-cmse-cve-2021-35465
-mfix-cmse-cve-2021-35465¤È¤«¤¤¤¦¤Î¤ÏArmv8-M¥³¥¢¤ÎÀȼåÀÂкö¤Ç¤¹¡£
2023ǯ¸½ºß¤ÎºÇ¿·¤ÎGCC¥³¥ó¥Ñ¥¤¥é¤Ï¥Ç¥Õ¥©¥ë¥È¤ÇON¤Ë¤Ê¤Ã¤Æ¤ª¤ê¤¤¤Á¤¤¤Á
Æþ¤ì¤ëɬÍפϤʤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¤¬Ç°¤Î¤¿¤áÌÀ¼¨¤·¤Æ¤Þ¤¹¡£
¡ü´ðËܤÎ"¤"¡¢¥¿¥¤¥Þ¡¼¤ÈUART¤Î¼ÂÁõ
STM32¤ËÂåɽ¤µ¤ì¤ëCortex-M·Ï¤Î¥³¥¢¤Ï¤Û¤Ü¤¹¤Ù¤Æ¤ËSystick¥¿¥¤¥Þ¡¼¤¬
ɸ½àÁõÈ÷¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£¤³¤Á¤é¤ò1mSec¥¦¥¨¥¤¥ÈÍѤΥ¿¥¤¥Þ¡¼¤È¤·¤Æ¡¢°ìÊý
¥Þ¥¤¥³¥ó¼þÊÕµ¡´ï¤Î¥¿¥¤¥Þ¡¼µ¡Ç½¤òÍøÍѤ·¤ÆuSec¥ª¡¼¥À¡¼¤Î¥¿¥¤¥Þ¡¼¤ò¼ÂÁõ¤·¤Þ¤¹¡£
º£²ó¤ÏuSecÍѤˤÏTIM5¤òÍøÍѤ·¤Þ¤·¤¿¡£
°Ê²¼systick.c¤è¤êÈ´¿è
/* Making MicroSecond-Order Timer uses general purpose timer! */
/* Enable timer clock */
USEC_TIMx_CLKEN();
/* calculate TIMx(2 or 5) Prescaler clock(APB1) */
if(RCC->CFGR & RCC_CFGR_PPRE1){
if((RCC->CFGR & RCC_CFGR_PPRE1) == RCC_HCLK_DIV2){
cal_usec_divide = SystemCoreClock/2; /* (HCLK(=SYSCLK)*2 */
}
else if((RCC->CFGR & RCC_CFGR_PPRE1) == RCC_HCLK_DIV4){
cal_usec_divide = SystemCoreClock/4; /* (HCLK(=SYSCLK)*4)*2 */
}
else if((RCC->CFGR & RCC_CFGR_PPRE1) == RCC_HCLK_DIV8){
cal_usec_divide = SystemCoreClock/8; /* (HCLK(=SYSCLK)*8)*2 */
}
else if((RCC->CFGR & RCC_CFGR_PPRE1) == RCC_HCLK_DIV16){
cal_usec_divide = SystemCoreClock/16; /* (HCLK(=SYSCLK)*16)*2 */
}
}
/* usec wait timer settings */
TimHandle.Instance = USEC_TIMx;
TimHandle.Init.Period = UINT32_MAX;
TimHandle.Init.Prescaler = ((cal_usec_divide)/USEC_INTERVAL) - 1;
TimHandle.Init.ClockDivision = 0;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
TimHandle.Init.RepetitionCounter = 0;
TimHandle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&TimHandle) != HAL_OK)
{
/* Capture error */
while (1);
}
USEC_TIMx->CR1 &= ~(TIM_CR1_UIFREMAP); /* Disable UIF Remap(Must Need!) */
HAL_TIM_Base_Start(&TimHandle);
ºÇ¶á¤ÎHAL¥é¥¤¥Ö¥é¥ê¤Ï"AutoReloadPreload"¹½Â¤ÂΤ¬Äɲäµ¤ì¤Æ¤¤¤ë¤Î¤Ç
°Ü¿¢¤ÎºÝ¤Ï¤´Ãí°Õ¤¯¤À¤µ¤¤¡£¤Þ¤¿,UIFRemap¥Ó¥Ã¥È¤Ë¤â¤´Ãí°Õ¤¯¤À¤µ¤¤¡£
UART¤Ë¤Ä¤¤¤Æ¤ÏNUCLEO-L552ZE-Q´ðÈľå¤Ç¤ÏSTLink¤ÎVCP¤È¤ÏLPUART
¤Ê¤ë¤â¤Î¤ÇÀܳ¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£°ìÈ̤ÎUART¤È¤Ï¿¾¯°ã¤¤¤¬¤¢¤ê¤Þ¤¹¤¬
¤ä¤ë¤³¤È¤ÏƱ¤¸¤Ç¤¹¡£LPUART1¡¢GPIOG7,8¤òTX,RX¤È¤·¤Þ¤¹¡£
°ì±þLPUART°Ê³°¤Î¥Ý¡¼¥È¤â»ÈÍѤǤ¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤ê¤Þ¤¹¤Î¤Ç¾ÜºÙ¤Ï
uart.cupport.c¤ò»²¾È´ê¤¤¤Þ¤¹(´ÝÅꤲ)
¤Ã¤È¤½¤ÎÁ°¤ËLPUART1¤ò»È¤¦ºÝ¤ÏLPUART1¤Ø¤Î¥¯¥í¥Ã¥¯¶¡µë¤Î¤Û¤«¤Ë
"HAL_PWREx_EnableVddIO2()"¤Î¼Â¹Ô¤â˺¤ì¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¤Þ¤¿¥ê¥ó¥°¥Ð¥Ã¥Õ¥¡¤Ë¤è¤ë¥Î¥ó¥Ö¥í¥Ã¥¥ó¥°Á÷¼õ¿®¤Ê¤Î¤Ï¤¤¤Ä¤âÄ̤ê
¤Ê¤Î¤Ç¥¹¥à¡¼¥º¤Ë¥Ç¡¼¥¿¤Î¤ä¤ê¼è¤ê¤¬¤Ç¤¤ë¤È»×¤¤¤Þ¤¹¡£
¡üSDMMC¥É¥é¥¤¥Ð¤Î¼ÂÁõ¡¦FatFs¤È¤Î·ë¹ç
STM32L5¤Ë¤ÏSDMMC¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¤³¤ì¤ò¼ÂÁõ¤·¤Þ¤¹¤¬¿ôǯÁ°STM32H7¤Ë
¼ÂÁõ¤·¤¿SDMMC¤Î¥É¥é¥¤¥Ð¤ò¥¹¥é¥¤¥É°Ü¿¢¤¹¤ë¤À¤±¤Î¤ª¼ê·Ú¤Ç¤¹¡ù
¤Ö¤Ã¤Á¤ã¤±º£²ó¤Î°Ü¿¢ºî¶È¤Ç°ìÈֳڤǤ·¤¿¡£

°ì±þ»ÈÍѾå¤ÎÃí°Õ¤Ê¤Î¤Ç¤¹¤¬STM32H7¤ÈƱ¤¸¤¯STM32L5¤ÎSDMMC¤ÏDDR
¥â¡¼¥É¤¬»ÈÍѲÄǽ¤Ç¤¹¤¬SDMMC¤Ë¶¡µë¤¹¤ë¥¯¥í¥Ã¥¯¤¬¥Ð¥¤¥Ñ¥¹¤µ¤ì¤Æ
¤¤¤Ê¤¤¤È»ÈÍÑÉԲĤȤʤê¤Þ¤¹¤Î¤Ç¤´Ãí°Õ¤¯¤À¤µ¤¤¡£
¤Í¤à¤¤¤µ¤ó¤ÎºîÎã¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏHSI48¤òSDMMC¤Ë¥Ð¥¤¥Ñ¥¹¤Ê¤·¤Ç
¶¡µë¤·¤Æ¤¤¤ë¤¿¤áDDR¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤»¤óorz


¤â¤·DDRÂбþ¤ÎeMMC¤ò¤ª»ý¤Á¤ÎÊý¤Ï¥³¥¢¥¯¥í¥Ã¥¯¤ò110MHz¤«¤é100MHz¤Ç
ư¤«¤¹¤ÈHSI48¤ò»È¤ï¤º¥³¥¢¥¯¥í¥Ã¥¯¤òSDMMC¤Î¥¯¥í¥Ã¥¯¤Ë¤¹¤ë¤è¤¦
ÀÚ¤êÂØ¤¨¤Þ¤¹¤Î¤Ç»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
STM32L5¤ÎºÇÂçÆ°ºî¥¯¥í¥Ã¥¯¤Ï110MHz¤Ê¤ó¤Ç¤¹¤±¤É¤³¤¦¤¤¤¦À©Ì󤬿§¡¹
¤¢¤Ã¤Æ100MHz¤Çư¤«¤¹¤Û¤¦¤¬¤è¤Ã¤Ý¤ÉÍÍø¤Ê¤ó¤Ç¤¹¤è¤Í¡Á
100MHz¤È¤«ºòº£¤Î¥Þ¥¤¥³¥ó¤Ç¤ÏÃÙ¤¤ÉôÎà¤Î¥¯¥í¥Ã¥¯¤Ç¤¹¤¬¤Þ¤¡½éÂå¤Î
STM32F1¤È¤«¤ÎMAX72MHzưºî¤ÈÈæ¤Ù¤¿¤é(¾ÃÈñÅÅÎϤâ¹ç´Ö¸«¤ë¤È)±ÀÅ¥¤Î
º¹¤Ç¤¹¤¬¤¹¤Ã¤«¤êìÔÂô¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤Í¡Á
STM32H7¤Î¼ÂÁõ¤Ç¤â¼Â¤Ï¤Ò¤Ã¤½¤êºÇ¹â®¤Î480MHzÂбþ¤·¤Æ¤Þ¤¹¤¬
¤³¤Á¤é¤â¤¤¤º¤ì¾Ò²ð¤·¤è¤¦¤È»×¤¤¤Þ¤¹¡£
¡üSPI¤È¥·¥ê¥¢¥ëÀܳTFT-LCD
STM32L5¤ÎSPI¥â¥¸¥å¡¼¥ë¤â¸À¤Ã¤¿¤Ã¤ÆÉáÄ̤ÎSPI¤Ê¤Î¤Ç¼ÂÁõ¤ÏÍÆ°×
¤Ç¤·¤¿¡Ä¤¬¡¢DMA¤Î¤Û¤¦¤Ï¤Á¤ç¤Ã¤È°ìÊʤ¢¤ê¤Þ¤·¤¿¡£
¤Í¤à¤¤¤µ¤ó¤¬ÃΤäƤ뽾Íè¤ÎDMA¤Ç¤Ï¤Ê¤¯¤Ã¤ÆDMA¤Î¥Á¥ã¥Í¥ë¤¬¥Þ¥ë¥Á
¥×¥ì¥¯¥¹¤µ¤ì¤Æ¤¤¤Æ½ÀÆð¤ÊÀßÄ꤬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢µÕ¤Ë°·¤¤¤Ë
¶ìÏ«¤·¤Þ¤·¤¿¤¬Example¤ò»²¹Í¤Ë²¿¤È¤«SPI¤ÇDMA¤òÅǤ±¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ
¤ª¤ê¤Þ¤¹¡£°Ê²¼¤ËDMAMUX¤ÎÀßÄê¤òÈ´¿è¤·¤Æ¤ª¤¤Þ¤¹¡£
Á´ÂΤÏ./lib/display/mcu_depend/display_if_basis.c¤ò»²¾È¤Î¤³¤È¡£
#ifdef USE_DISPLAY_DMA_TRANSFER
/* DMA controller clock enable */
__HAL_RCC_DMAMUX1_CLK_ENABLE();
__HAL_RCC_DMA1_CLK_ENABLE();
/* Configure DMA request LcdDmaHandle */
LcdDmaHandle.Instance = SPILCD_DMA_CHANNEL;
LcdDmaHandle.Init.Request = SPILCD_DMA_REQEST;
LcdDmaHandle.Init.Direction = DMA_MEMORY_TO_PERIPH;
LcdDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
LcdDmaHandle.Init.MemInc = DMA_MINC_ENABLE;
LcdDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
LcdDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
LcdDmaHandle.Init.Mode = DMA_NORMAL;
LcdDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM;
if (HAL_DMA_Init(&LcdDmaHandle) != HAL_OK)
{
for(;;){
__NOP();
}
}
if (HAL_DMA_ConfigChannelAttributes(&LcdDmaHandle, DMA_CHANNEL_NPRIV) != HAL_OK)
{
for(;;){
__NOP();
}
}
__HAL_LINKDMA(&SpiHandle,hdmatx,LcdDmaHandle);
/* DMA interrupt init */
/* SPILCD_DMA_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SPILCD_DMA_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(SPILCD_DMA_IRQn);
#endif
¤Þ¤¿²¼ÂÌ´ðÈĤǤÏST7789V2¤ò»ÈÍѤ·¤¿TFT-LCD¥â¥¸¥å¡¼¥ë¤òºÎÍѤ·¤Æ
¤ª¤ê¤Þ¤¹¤¬¤³¤Á¤é¤Î¥Ç¡¼¥¿Àþ¤ÏSDI¤ÈSDO¤¬¥Þ¥ë¥Á¥×¥ì¥¯¥¹¤µ¤ì¤¿SDA
¤È¤Ê¤Ã¤Æ¤ª¤ê¡¢ST7789V2¤Î¥Ç¥Ð¥¤¥¹ID¤ò¼èÆÀ¤·¤¿¤¤¤Ê¤é¤ÐSTM32L5¦¤Ç
SPI¤ÎMOSI¤ÈMISO¤òľ·ë¤·ÆÉ¤ß½Ð¤·¤ÎºÝ¤ËMISO¤Î¿®¹æ¤òÀµ¤·¤¯¼õ¤±¼è¤ë
MOSI¤òGPIO¤ÎÆþÎϤˤ虜¤ï¤¶ÀÚ¤êÂØ¤¨¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
°Ê²¼¤Ë¤½¤Î¥³¡¼¥É¤ò¼¨¤·¤Þ¤¹¡£
void Display_ChangeSDA_If(uint8_t sda_mode)
{
GPIO_InitTypeDef GPIO_InitStructure;
if(sda_mode == TFT_SDA_READ){
/* Enable CTRL Line GPIO Settings */
#if defined(USE_SOFTWARE_SPI)
DISPLAY_GPIOCLK_EN(DISPLAY_CLK_SDI);
GPIO_InitStructure.Pin = CTRL_SDI;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_PULLUP;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStructure.Alternate = 0;
HAL_GPIO_Init(DISPLAY_PORT_SDI, &GPIO_InitStructure);
#else
/* Connect SPI MOSI pins to GPIO Input */
/* SPI MOSI pin configuration into GPIO input pullup */
DISPLAY_GPIOCLK_EN(DISPLAY_CLK_SDI);
GPIO_InitStructure.Pin = CTRL_SDI;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_PULLUP;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStructure.Alternate = 0;
HAL_GPIO_Init(DISPLAY_PORT_SDI, &GPIO_InitStructure);
#endif
}
else {
/* Enable CTRL Line GPIO Settings */
#if defined(USE_SOFTWARE_SPI)
DISPLAY_GPIOCLK_EN(DISPLAY_CLK_SDI);
GPIO_InitStructure.Pin = CTRL_SDI;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStructure.Alternate = 0;
HAL_GPIO_Init(DISPLAY_PORT_SDI, &GPIO_InitStructure);
#else
/* Connect SPI pins to Alternate Function */
/* Restore SPI MOSI pin configuration */
DISPLAY_GPIOCLK_EN(DISPLAY_CLK_SDI);
DISPLAY_PERIF_CLK(ENABLE);
GPIO_InitStructure.Pin = CTRL_SDI;
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStructure.Alternate = SRC_SDI;
HAL_GPIO_Init(DISPLAY_PORT_SDI, &GPIO_InitStructure);
#endif
}
}


¤Á¤Ê¤ß¤ËST7789V2¦¤Î¥É¥é¥¤¥Ð¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¾åµ¤ÎÀÚ¤êÂØ¤¨¤Î
ɬÍפʤ¯ID¤ò·è¤áÂǤÁ¤ÇÊÖ¤¹¤è¤¦¤Ë¤·¤Æ¤Þ¤¹¤Î¤Ç¤â¤Î¹¥¤¤ÊÊý¤À¤±
SDA¥Þ¥ë¥Á¥×¥ì¥¯¥¹Í¸ú¤Ë¤·¤Æ»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
SDA¥Þ¥ë¥Á¥×¥ì¥¯¥¹¤ÎºÝ¤ÏSTM32¦¤ÎMOSI¤ÈMISO¤ò¥·¥ç¡¼¥È¤·¤Æ¤¯¤À¤µ¤¤¡£


ST7789V2¤«¤éID¤òÆÉ¤ß½Ð¤¹ÀßÄê¤Ç¥Ó¥ë¥É¤·¤Æ¥Ç¥Ð¥Ã¥¬¤ÇÄɤ䫤±¤Æ¤ß¤ë¤È
¤³¤ó¤Ê´¶¤¸¤ËSDA¤«¤éST7789V2¤ÎID(RDID2(0xDB)¤Ç0x85¤¬ÊÖ¤ë)¤¬
ÆÉ¤Þ¤ì¤Æ¤¯¤ë¤Î¤¬¤ï¤«¤ê¤Þ¤¹¡£
SPIÀܳ¤Çư¤¯¥â¥¸¥å¡¼¥ë¤Ï¤³¤ó¤Ê´¶¤¸¤Ç¥Ô¥ó¿ôÀáÌó¤Î¤¿¤á¤ËSDI¤ÈSDO¤¬
¥Þ¥ë¥Á¥×¥ì¥¯¥¹¤µ¤ì¤Æ¤ë¤³¤È¤â¤¢¤ë¤Î¤Ç³Ð¤¨¤Æ¤ª¤¤¤ÆÂ»¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£

¤È¤¤¤¦¤ï¤±¤Ç¤¤¤Ä¤â¤ÎChaN»Õ¤Î¥Õ¥¡¥¤¥é¡¼µ¯Æ°¤«¤é¤Î¡Ä

³¤¤ÇƯ¤¤¤Æ¤ë¤¤¤Ê¤¤¤µ¤ó¤Îpng·Á¼°¤Î¥¤¥é¥¹¥Ä¤òlibpng¤Ç¥Ç¥³¡¼¥É¡ª
(LCD¤Î¥µ¥¤¥º¾®¤µ¤¤¤Î¤Ç²èÁü¤Î°ìÉô¤·¤«É½¼¨¤Ç¤¤Þ¤»¤ó¤¬)
libpng¤Î¤Û¤«¤Ëbmp·Á¼°¤Ï¤â¤Á¤í¤ólibjpeg¤ägiflib¤Çjpg¡¢gif·Á¼°
¥Õ¥¡¥¤¥ë¤âɽ¼¨¤Ç¤¤Þ¤¹¤¬STM32L5¥·¥ê¡¼¥º¤Ï¥Õ¥é¥Ã¥·¥å¥á¥â¥êÍÆÎ̤¬
512kByte¤·¤«¤Ê¤¤¤Î¤Ç¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤ò¾è¤»¤Ä¤Ä²èÁü¥Ç¥³¡¼¥ÉÍѤÎ
¥é¥¤¥Ö¥é¥êÁ´Éô¾è¤»¤ÏÍÆÎ̾åÈó¾ï¤Ë¶ì¤·¤¤¤Ç¤¹¡£
¤½¤ó¤Ê¤È¤¤Î¤¿¤á¤ËÍÆÎ̤ò¿©¤¦¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤Ï³°ÉÕ¤±¤ÎSPI-ROM
¤Ë¥Ç¡¼¥¿¤òÇÛÃÖ¤·¤Æ¥¢¥¯¥»¥¹¤·¤¿¤¤¤È¤³¤í¤Ç¤¹¤¬¡Ä
¤³¤¦¤¤¤¦ÍÑÅÓ¤ËÊØÍø¤ÊOCTO-SPI¤È¤¤¤¦µ¡Ç½¤¬¤¢¤ê¤Þ¤¹¤¬²òÀ⤬Ť¯
¤Ê¤ê¤½¤¦¤Ê¤Î¤Ç¼¡²ó¤Ë³¤¤Þ¤¹¡Ä¡ª
Âç¼þ²óÃÙ¤ì¤ÇCortex-M33¤ÈSTM32L5¤Ï¤Â¤á¤Þ¤·¤¿
¡üM33½Ð¤Æ¤«¤é²¿Ç¯¤¿¤Ã¤Æ¤ë¤ó¤ÀYO
ÆÅARM¤«¤é¾®Ê¸»úarm¤ËÂå¤ï¤Ã¤Æ¤â¤Ï¤ä¿ôǯ¡Ä¤Í¤à¤¤¤µ¤ó¤â¤è¤¦¤ä¤Ã¤È
ARMv8¤ÎCortex-M33¥³¥¢¤Ë¼ê¤ò½Ð¤·¤Þ¤·¤¿¡Ä¡ª
¥»¥¥å¥ê¥Æ¥£¡¼µ¡Ç½¤ò¶¯²½¤·¤¿Cortex-M33¥³¥¢¤ÎSTM32L5¤Ç¤¹¡ª¡ª
¤Æ¤¤¤¦¤«2023ǯ¸½ºß¤ÏL5¤ò¤½¤ì¤¾¤ì¤ÎʬÌîÊ̤˿ʲ½¤µ¤»¤¿STM32U5¤ä
STM32H5¤âÅо줷¤Æ¤ª¤ê¤Þ¤¹¤¬¤Þ¤º¤ÏL5¤«¤é¹Ô¤¤Þ¤¹¡ª¡ª
¼ÂºÝ¤Ë¤ÏSTM32L552ZET6QU¤ò»ÈÍѤ·¤¿NUCLEO-L552ZE-Q¥Ü¡¼¥É¤òÆþ¼ê
¤¤¤¿¤·¤Þ¤·¤¿¡£
¤³¤ÎNUCLEO´ðÈĤÏ(¤Í¤à¤¤¤µ¤ó¤ÎÃæ¤Ç¤Î)Ä̾Î144PinÈÄNUCLEO¤È¸Æ¤Ð¤ì¤ë
¤â¤Î¤Ç¤¹¡£NUCLEO´ðÈIJ¤ÎÃæ¤Ç¤ÏºÇÂç¤ÎÂ礤µ¤È¤Ê¤ê¤Þ¤¹¤¬¥Ô¥ó¿ô¤Î
¿¤¤¥Þ¥¤¥³¥ó¤ò»È¤Ã¤Æ¤¤¤ë¤ª¤«¤²¤«³°Éô¤Ø°ú¤½Ð¤µ¤ì¤¿¥Ý¡¼¥È¤¬¸ÇÄê²½
¤µ¤ì¤Æ¤ª¤ê¡¢°Û¤Ê¤ëCPU´Ö¤Ç¤â²¼ÂÌ´ðÈĤò»È¤¤¤Þ¤ï¤»¤é¤ì¤ë¤È¤¤¤¦
¶Ë¤á¤ÆÂ礤ÊÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡£
Î㤨¤ÐSDMMC¤Î¥Ý¡¼¥È¤Ï¥³¥Í¥¯¥¿¤Î¤³¤Î°ÌÃÖ¤Ëɬ¤ºÇÛÃÖ¤µ¤ì¤Æ¤ª¤ê¡¢
°ìÅÙ´ðÈĤò¤³¤·¤é¤¨¤Æ¤·¤µ¤¨¤¹¤ì¤ÐSTM32H7¤À¤í¤¦¤¬STM32F4¤À¤í¤¦¤¬
STM32U5¤À¤í¤¦¤¬¤µ¤é¤ËºÇ¿·¤ÎSTM32H5¤Ç¤¹¤é144PinÈÇNUCLEO¤Ê¤é
Ʊ°ÌÃ֤ʤ櫓¤Ç¥Ï¡¼¥É¤È¥½¥Õ¥È¤ÎÀÚ¤êʬ¤±¤¬¤È¤Æ¤âÍÆ°×¤Ë¤Ê¤ê¤Þ¤¹¡£
¡ü¤Æ¤ï¤±¤Ç144PinNUCLEO´ðÈÄÍÑÈÆÍѲ¼ÂÌ´ðÈĤòºî¤Ã¤Æ¤ß¤¿¡£
¤Í¤à¤¤¤µ¤ó¤ÏÎáÏÂ5ǯ¤Ë¤Ê¤Ã¤Æ¤â¼«ÎϤǥץê¥ó¥È´ðÈĵ¯¤³¤»¤Ê¤¤»¨µû
¤Ê¤Î¤Ç¥æ¥Ë¥Ð¡¼¥µ¥ë´ðÈĤȥݥꥦ¥ì¥¿¥óƼÀþ¤Ç¤»¤³¤»¤³ÇÛÀþ¤Ç¤¹¡Ä¡£
ÂçÆ°Ì®¤Î+3.3V¥é¥¤¥ó¤ÏLCD,SDMMC,QSPI/OCTO-SPI,I2S¥Ç¥Ð¥¤¥¹¤ÈÂçÎ̤Ë
ÅÅÎϤò¾ÃÈñ¤¹¤ë¤Î¤ÇNUCLEO¤Î+3.3V½ÐÎϤ«¤é¼èÆÀ¤ÏÉÔ²Äǽ¤Ç¤¹¡£
¤·¤¿¤¬¤Ã¤ÆVbus¤Î+5V¤«¤é+3.3V¤ò¸ÄÊ̤˺î¤ë¤³¤È¤Ë¤·¤Þ¤·¤¿¡£
¤³¤³¤ÇÅо줹¤ë¤Î¤¬Î÷²Á¤Ç¤Ñ¤ï¤Õ¤ê¤ã¡¼¤ÊLDO¡¢MIC37100-3.3WS-TR¤Ç¤¹¡ª
LT1963A¤¬¹âÎæ¤Î²Ö¤Ë¤Ê¤ê¡¢ADP3338¤¬NRND¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿º£¡¢¹âÀǽ
LDOÆṉ̃¤È¤Ê¤Ã¤¿¤Í¤à¤¤¤µ¤ó¤òµß¤¦¤Ñ¤ï¤Õ¤ê¤ã¡¼¤Ê¤ä¤Ä¤Ç¤¹¡£
¥É¥í¥Ã¥×¥¢¥¦¥ÈÅ۵¤Ï280mV/1A,10uF°Ê¾å¤Î¥»¥é¥ß¥Ã¥¯¥³¥ó¥Ç¥ó¥µ¤Ç
ưºî²Äǽ¤Ç¤ªÃÍÃÊ1¸Ä240±ß¤¯¤é¤¤¤Ê¤Î¤ÇÈó¾ï¤Ë¥ª¥È¥¯¤Ç¤¹¡ª¡ª¡ª
¤³¤Á¤é¤Ç¤â¾Ò²ð¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¥è¥í¥·¥¯¡ª
¤§¤Ã¤ÈÏ䬤½¤ì¤Þ¤·¤¿¤¬SDMMC¤Îü»Ò¤Ï¥Þ¥¤¥¯¥íSD¥³¥Í¥¯¥¿¤òºÎÍÑ
¤·¤Þ¤·¤¿¡£¤½¤ì¤È°ÊÁ°¤«¤é¸À¤Ã¤Æ¤¤¤ëÄÌ¤ê³Æ¥Ç¡¼¥¿¥é¥¤¥ó¤Î¥×¥ë¥¢¥Ã¥×&
½ªÃ¼¤Î½èÍý¤Ï͸À¼Â¹Ô¤Ç¤·¤Ã¤«¤ê»Ü¤·¤Æ¤ª¤ê¤Þ¤¹¡£¤Í¤à¤¤¤µ¤ó¤ÏCMD¤È
D0~D3¤Î¥×¥ë¥¢¥Ã¥×¤ò22kohm,CLK¤ÎľÎó½ªÃ¼¤Ï33ohm¤È¤·¤Þ¤·¤¿¡£
·ë¹½¥é¥Õ¤Ê¼ÂÁõ¤Ç¤¹¤¬¡¢CLK¤ËÁÞÆþ¤¹¤ëľÎó½ªÃ¼¤Î¸ú²Ì¤ÏÀäÂç¤Ç¤¹¡£
̵Äñ¹³¾õÂ֤ǤϤ³¤ó¤Ê˽¤ì¤Þ¤ï¤Ã¤Æ¤¤¤ëÀ¸°Õµ¤¥¯¥í¥Ã¥¯¥é¥¤¥ó¤â¡Ä
Äñ¹³¤òľÎó¤Ë¤Ö¤Á¤³¤à¤À¤±¤Ç¤³¤ó¤Ê¤Ë¤ï¤«¤é¤»¤é¤ì¤Þ¤¹¡ª¤³¤ì¤Ç
°ÂÄꤷ¤ÆSD¥«¡¼¥É¤Ë¥¢¥¯¥»¥¹¤¬¤Ç¤¤Æ¥½¥Õ¥È¤ËÀìǰ¤Ç¤¤Þ¤¹¤Í¡ª
ɽ¼¨¥Ç¥Ð¥¤¥¹¤Ï3ǯÁ°¤Ë¹ØÆþ¤·¤Æ²¹¤á¤¹¤®¤ÆÉå¤é¤»¤¿TFT-LCD¥â¥¸¥å¡¼¥ë¡¢
ATM0130B3¤òºÎÍѤ·¤Þ¤·¤¿¡£240x240¤Ê¤Î¤Ë1.3¥¤¥ó¥Á¤È¤È¤Ã¤Æ¤â¾®¤µ¤¤
¥â¥¸¥å¡¼¥ë¤Ê¤Î¤Ç¤¹¤¬¤³¤ÎNUCLEO´ðÈĤˤϤޤµ¤ËºÇŬ¤Ê¥ä¥Ä¤Ç¤¹¡£
¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ë¥³¥ó¥È¥í¡¼¥é¤ÏST7789V2¤Ç¤¹¡£V2¤È¤«
¤ª¿¬¤Ë̾Á°¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤¹¤¬2023ǯ¸½ºß¡¢¤³¤ÎST7789²¤ÏÅŻҹ©ºî¤Î
¤ª¶¡¤È¤·¤ÆÉ¬¤ºÌ¾Á°¤¬¾å¤¬¤ë¤¯¤é¤¤Í̾¤Ç¡¢¤â¤Ï¤äILI9341¤è¤ê¤â¹¤¯
»ÈÍѤµ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¡¢¤Þ¤µ¤ËÇÆ¸¢¤ò°®¤Ã¤¿¤È¤¤¤Ã¤Æ¤â¤è¤¤¤Ç¤·¤ç¤¦¡£
¥Þ¥ë¥Á¥×¥ì¥Ã¥¯¥¹²½¤µ¤ì¤¿¥Ç¡¼¥¿¥é¥¤¥ó¤«¤é¥Ç¥Ð¥¤¥¹ID¼èÆÀ¤¹¤ëÊýË¡Åù¤Î
»ÈÍÑ»þ¤Î¥³¥Ä¤Ï¾ì¤ò²þ¤á¤Æ¥½¥Õ¥ÈÊԤǾҲ𤷤ޤ¹¡£
FONTX2Åù¤ÎÂçÍÆÎ̥ǡ¼¥¿¤ÎÊݸÀè¤È¤·¤Æ¥á¥â¥ê¥Þ¥Ã¥×¥É¤Ç¥ê¥Ë¥¢¤Ë
¥¢¥¯¥»¥¹¤Ç¤¤ëQSPI¤ò»ÈÍѤ·¤Þ¤¹¡£Áª¤ó¤À¥Ç¥Ð¥¤¥¹¤Ï¤³¤ì¤Þ¤¿ÅÅ»Ò
¹©ºî¤ÇÄêÈÖ¤ÎSPI-ROM¤Ë¤Ê¤Ã¤¿Winbond¤ÎW25Q128JVSIQ¤Ç¤¹¡£
¤Á¤Ê¤ß¤ËW25Q128JV¼«¿È¤ÏQSPI¥â¡¼¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¤¬
(¥Ñ¡¼¥Ä¥Ê¥ó¥Ð¡¼ËöÈø¤ÎIQ¤Ï¥Ç¥Õ¥©¥ë¥È¤ÇQSPI¥â¡¼¥É¤Î°ÕÌ£)¡¢STM32L5¤Ë
¤ª¤¤¤Æ¤ÏOCTO-SPI¤È¤¤¤¦QSPI¤¬¤µ¤é¤Ë¥Ñ¥ï¡¼¥¢¥Ã¥×¤·¤¿¥â¥¸¥å¡¼¥ë¤¬
ÅëºÜ¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£
Ãí¡§´ð¼ÂÁõ¤Ï¤·¤Þ¤·¤¿¤¬¤¿¤Ö¤óL5ÈǤǻÈÍѤ»¤ºH5ÈÇNucleo¤Ç»È¤¦¤È»×¤¤¤Þ¤¹¡£
SAI¤Ë¤Ä¤¤¤Æ¤â¥Õ¥é¥Ã¥·¥åÍÆÎ̤δط¸¤ÇH5ÈÇNucleo¤Ç¾Ò²ð¤·¤Þ¤¹¡£
¤½¤ó¤Ê¤ï¤±¤Ç²¼ÂÌ´ðÈĤξҲð¤À¤±¤Ç°ìÇÕ°ìÇդˤʤäƤ·¤Þ¤¤¤Þ¤·¤¿¤Î¤Ç
¤Í¤à¤¤¤µ¤ó¤Î¤¤¤Ä¤â¤Î¤ËÁêÅö¤¹¤ëFatFs¤Î¼ÂÁõÅù¤Î¥½¥Õ¥È¥¦¥¨¥¢¤Î¾Ò²ð¤Ï
¼¡²ó°Ê¹ß½ç¼¡¾Ò²ð¤È¤µ¤»¤Æ¤¤¤¿¤À¤¤Þ¤¹¡£¹¹¿·´èÄ¥¤ë¤¾¤¤¡ª
¤Þ¤¿¡¢µ¤¤Å¤¤¤Æ¤ëÊý¤â¤¤¤ë¤È»×¤¤¤Þ¤¹¤¬¤¹¤Ç¤Ë¤ª¤¤Ñ¤ËFatFs¤Î¼ÂÁõÎã¤Î
L5¸þ¤±¥×¥í¥¸¥§¥¯¥È¤òÀè¹Ô¤Ç¸ø³«¤·¤Æ¤ª¤ê¤Þ¤¹¤Î¤Ç¶½Ì£¤¢¤ëÊý¤Ï¤³¤ì¤Ç
ͽ½¬¤ò¤ª´ê¤¤¤·¤Þ¤¹¡£
GNSS¥â¥¸¥å¡¼¥ë¤ò»îÍѤ¹¤ë20 -ublox SAM-M10Q¤Ï¤Â¤á¤Þ¤·¤¿-
¡üÆþ¿®
¤Ä¤¤¤Ë¡Ä¤Í¤à¤¤¤µ¤ó¤âublox¶µ¤ËÆþ¿®¤·¤Þ¤·¤¿¡ª¡ª¡ª
ublox¤ÎM10¥Á¥Ã¥×¤¬»ÈÍѤµ¤ì¤¿SAM-M10Q¤Ç¤¹¡ª¡ª¡ª¡ª
¤½¤ÎSAM-M10Q¤¬¾è¤Ã¤¿¥â¥¸¥å¡¼¥ë¤òAliexpress¤ÎMAKESYS¼Ò¤«¤é
ľÀÜ¹ØÆþ¤·¤Þ¤·¤¿¡ª
2013ǯ¤«¤é10ǯ´Ö»ÈÍѤ·Â³¤±¤¿Gms-G9¥â¥¸¥å¡¼¥ë¤È¤Î¥¹¥Ú¥Ã¥¯
Èæ³Ó¤Ç¤¹¡£10ǯ¤¿¤Ä¤È³ÖÀ¤¤Î´¶¤¬¤·¤Þ¤¹¤Í¡ÄÆÃ¤Ë¾ÃÈñÅÅÎϤÎ
Ä㤵¤¬ºÝΩ¤Ã¤Æ¤Þ¤¹¤Í¡Á
¤Á¤Ê¤ß¤Ë2023ǯ¸½ºß¤«¤Ä¤Æ¤Î¤ß¤Á¤Ó¤°ì¹æµ¡(PRN193)¤Ï°úÂष¤Æ
ÅÅÇȤϼõ¿®¤¬¤Ç¤¤Ê¤¯¤Ê¤ê¡¢Gms-g9¤ËÅëºÜ¤µ¤ì¤¿MT3333¥Á¥Ã¥×¤Ï
¸½ºß¤Ç¤ÏÆó¹æµ¡¡¢»Í¹æµ¡¤ÎL1C/A¿®¹æ¤·¤«¼õ¿®¤¬¤Ç¤¤º¡¢¤ß¤Á¤Ó¤
½é¹æµ¡¸å·Ñµ¡¼ï¤ÎQZS1R(PRN196)¤äGEO¤È¸Æ¤Ð¤ì¤ëÀŻߵ°Æ»Ver¤Î
¤ß¤Á¤Ó¤(PRN199)¤Î¼õ¿®¤¬ÉÔ²Äǽ¤Ç¤¹¡£
¤½¤¦¤¤¤¦·Ð°Þ¤â¤¢¤ê¡¢¤³¤Î¥¿¥¤¥ß¥ó¥°¤Çublox¶µ¤ËÆþ¿®¤·¤¿¼¡Âè¤Ç
¤´¤¶¤¤¤Þ¤¹¡£
¤µ¤Æ¡¢Á°ÅÓ¤ÎÄ̤ê¤Í¤à¤¤¤µ¤ó¤ÏSAM-M10Q¤¬¾è¤Ã¤¿½ÐÍè¹ç¤¤¤Î
¥Ü¡¼¥É¥â¥¸¥å¡¼¥ë¤ò¹ØÆþ¤·¤¿¤ï¤±¤Ç¤¹¤¬ºÇÄã¸Â¤ÎUART¤ÎÄñ¹³Êݸî
¤ä+5VÆþÎϤòÁÛÄꤷ¤¿¥ì¥®¥å¥ì¡¼¥¿¤Ê¤É¤¬ÅëºÜ¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£
¤¬¡¢Ê̤Ë+5V¤Ç¤Ï¤Ê¤¯¤È¤â"3V3ü»Ò"¤Ë3.3V¤òľÀܤ֤Á¤«¤Þ¤·¤Æ¤â
Á´¤¯ÌäÂê¤Ê¤¯»ÈÍѤ¬²Äǽ¤Ç¤¹(UART¤Î½ÐÎϤÏ+5VÆþÎϤǤâLVTTL)
¡ü¤Þ¤º¤ÏưºîÈæ³Ó¤·¤Æ¤ß¤è¤¦
¤ª¼¡¤Ï¼ÂºÝ¤Î¼õ¿®Èæ³Ó¤ò¹Ô¤¤¤Þ¤·¤¿¡£¾ì½ê¤Ï±§¼£Àî¤Î¤Û¤È¤ê¤Ç¤¹¡ª
Android¤Î¥¿¥Ö¥ì¥Ã¥È¤ËSTM32 GNSSTr@cker¤Î²¾ÁÛCOM¤ÇÀܳ¤·¤ÆGms-g9,
SAM-M10Q¥â¥¸¥å¡¼¥ë¤ÈÄÌ¿®¤·¤Æ¤É¤Î¤ß¤Á¤Ó¤¤¬¼õ¿®¤Ç¤¤ë¤«Èæ³Ó
¤·¤Æ¤ß¤Þ¤¹¡£¤Ä¤¤¤Ç¤ËAndroid¥¿¥Ö¥ì¥Ã¥È¤ÎÆâ¡GPS¥â¥¸¥å¡¼¥ë¤â
Èæ³Ó¤·¤Þ¤·¤ç¤¦¡£
º£²ó¤ÎÈæ³Ó¤Ë¤¢¤¿¤ê¡¢Æâ¢GPS¤â²¾ÁÛCOMÀܳ¤ÎGPS¤â»ÈÍѤǤ¤ë
"GPS Connector"¤È¤¤¤¦¥¢¥×¥ê¤ò»ÈÍѤ·¤Þ¤·¤¿¡£
¤Þ¤º¤ÏAndroid¥¿¥Ö¥ì¥Ã¥È¤ÎÆâ¢GPS¤Ç¤¹¡£
¸æÍ÷¤ÎÄ̤êPRN194,195,196¤¬¼õ¿®¤Ç¤¤Æ¤Þ¤¹¡£
196¤Ï½é¹æµ¡¸å·Ñ¤ÎQZS1R¤Ç¤¹¡£Alldocube¤Ã¤Æ¤¤¤¦°Âʪ¥¿¥Ö¥ì¥Ã¥È
¤Ç¤·¤¿¤¬¤Ê¤«¤Ê¤«¤ä¤ê¤Þ¤¹¤Í¡£
¤ª¼¡¤ÏGms-g9¤Ç¤¹¡£STM32 GNSSTr@cker¤Î²¾ÁÛCOMµ¡Ç½¤ÇÀܳ¤·¤Þ¤¹¡£
Android¤Î¥¢¥×¥ê¤âÆâ¢¤È³°ÉÕ¤±¤ÈÀÚ¤êÂØ¤¨¤é¤ì¤ë¤Î¤¬Í¥½¨¤Ç¤¹¡£
¸æÍ÷¤ÎÄ̤ê»Äǰ¤Ê¤¬¤éPRN196¤Î½é¹æµ¡¸å·Ñµ¡¤Ï¼õ¿®¤¬¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
MT3333¤Ï¤³¤ì¤¬¸Â³¦¤«¡Ä¡ª¡©
ºÇ¸å¤ËSAM-M10Q¤Ç¤¹¡ª¡ª¡ª
¤ª¤ª¤Ã¡ª±ÒÀ±É½µ¤¬¤Á¤ã¤ó¤ÈÆüËܹñ´ú¤Î"QZSS"¤Ë¤Ê¤Ã¤Æ¤ë¡ª¡ª¡ª
2->PRM194,3->PRN195¤ÈÆÉ¤ßÂØ¤¨¤Æ¤¯¤À¤µ¡Äi¡Ä¤ó¡©
¤¢¤ì¡Ä7¤Ã¤ÆPRN199¤ÎGEO¤Ç¤¹¤«¡¦¡¦¡¦¡¦Íº¡¹¤Ã¡¦¡¦
ËÜÍè¤Ê¤é4¤ÎPRM196¤â¸«¤¨¤ë¤Ï¤º¤Ç¤¹¤¬¤³¤³¤Ë¤Ï±Ç¤Ã¤Æ¤Þ¤»¤ó¤Ç¤·¤¿¡£
¡ü¤µ¤¡¼ÂÁ©DA!
¤½¤·¤Æ¤³¤³¤«¤é¤¬ËÜÈ֤Ǥ¹¡ª¡ª¡ª£±£±£±¡ª¡ª¡ª
¤³¤é¡ª¡ª¡ª¤½¤³¡ª¡ª¥Ú¡¼¥¸ÊĤ¸¤ë¤Ê¡ª¡ª¡ª¡ª
¤Í¤à¤¤¤µ¤ó¤ÎËÌΦ¿¯¹¶¤Ï¤Ä¤¤¤ËºÇ½ª¶ÉÌ̤ò·Þ¤¨¡¢ÌÜŪ¤Î¶âÂô·óÏ»±à
¤Ø¤È²¦¼ê¤ò¤«¤±¤Æ¤ª¤ê¤Þ¤·¤¿¤¬º£²ó¤Ç¤Ä¤¤¤Ë·óÏ»±à¤Ë¹Ô¤¤Ä¤¤Þ¤¹¡ª
¤Ä¤¤¤Ç¤ËSAM-M10Q¤ò»È¤Ã¤¿¥í¥¬¡¼¤ÈCanmoreÀ½GP-102¤È¤Î¥í¥®¥ó¥°
Èæ³Ó¤â¹Ô¤Ã¤¿¤ê¤·¤Þ¤¹¡ª¡ª¡ª
¡ü2023.06.10 ¾®¾¾¡Á¶âÂô
ÁáÄ«¤ÎËÌΦ¾®¾¾IC¡Ä
¤Í¤à¤¤¤µ¤óÅ쳤¼«Á³ÊâÆ»¹¶Î¬°ÍÍê10ǯ¤Ö¤ê¤Ë¹â®¥Ð¥¹¤òÍøÍѤ·¤Þ¤·¤¿¡£
¤¤¤¶¹Ô¤«¤óËÌΦƻ!
Á°ÅIJȤ椫¤ê¤Î¾®¾¾Å·ËþµÜ¤Ç¤¹¡£
ÀÐÀ¤Îƻϩ¤ÏÀÖ¤¤¿§¤¬Â¿¤¤¤Ç¤¹¤¬Í»ÀãÁõÃÖ¤Î"¤µ¤Ó"¤À¤½¤¦¤Ç¤¹¡£
¤«¤Ä¤Æ±Ø¤À¤Ã¤¿»û°æ¿Þ½ñ´Û¤Ç¤¹¡£
Èù̯¤ËÆ»¤Ë̤äƼê¼èÀî¤ÇËÌΦƻ¤ËÉüµ¢¤·¤Æ¶¶¤òÅϤê¤Þ¤¹¡£
¤À¤ó¤À¤óÆü¤¬¾º¤Ã¤Æ¤¤Þ¤·¤¿¡Ä¤¢¤Å¤¤
Çò»³»Ô¤æ¤¨¤ËÇò»³¿À¼Ò¤¬¤ä¤¿¤é¿¤¤¤Ç¤¹
Æ»¤Î±Ø¤á¤°¤ßÇò»³¤Ç¾®µÙ·Æ¤Ç¤¹¡£
¹ñÆ»¤Ë¤Þ¤È¤ï¤ê¤Ä¤¯¤è¤¦¤ËËÌΦƻ¤¬Â³¤¤Þ¤¹¡£
¾¾Ç¤±Ø¶á¤¯¤ÎÀéÂåÆôÄͤǤ¹¡£
Éݤ¤¡Ä
¾¾Ç¤±Ø¤ÈÆæ¤Î¤¦¤ó¤³¤Ç¤¹¡Ä
¤Ê¤ó¤Ç¤¦¤ó¤³¡Ä
ºÆ¤Ó¹ñÆ»ËÌΦƻ¤Ç¤¹¡Ä
ÂÀÍÛ¸÷Àþ¤¬Äˤ¤¡Ä¡¦
Èù̯¤Ë¥ë¡¼¥È¥ß¥¹¤·¤ÆÂç¾è»ûÀפǤ¹¡£
ËÌΦŴƻ¤Î½ªÅÀÌîÄ®±Ø¤Ç¤¹¡£
·óÏ»±à¤Þ¤Ç¤â¤¦¤¹¤°¡ª
ÀΤʤ¬¤é¤ÎÉ÷¾ð¤¬¤¢¤ë¤Ë¤·¤ÎÃã²°Ä®¤Ç¤¹¡£
Çξ֤ÎÄԤǤ¹¡ª¡ª¤¦¤©¤©¤â¤¦¤¹¤³¤·¡ª¡ª
¡Ä¥Ã¥ÃËÌΦƻ¤Î¤Ò¤È¤Ä¤Îµ¯ÅÀ¡¢¹áÎÓË·¤ËÅþÃå¤Ç¤¹¡Ä¡ª¡ª
¤³¤³¤«¤é·óÏ»±à¤Ë¸þ¤«¤¤¤Þ¤¹¡£
¶âÂô¿À¼Ò¤«¤é·óÏ»±à¤ËÆþ¤ê¤Þ¤¹¡Ä
¤Ê¤ª¡¢·óÏ»±à¤ËÍ褿¤Î¤Ï30ǯ¤Ö¤ê¤Ç¤¹¡Ä
¤¥¤ª¤ª¤ª¤ª¤ª¤ª¤ª¤ª¤ª¤ª¤ª
²û¤«¤·¤¹¤®¤ÆÁ´Á³³Ð¤¨¤Æ¤Ê¤¤¡Ä
30ǯÁ°Í褿¤È¤¤Ï¿¿ÅߤǤ·¤¿¤·¤Ê¤ª¤µ¤é¤Ç¤¹¤Í¡Ä
·óÏ»±à¤Ç°ìÈÖÍ̾¤Ê¤È¤³¤í¤Ç¤¹
·óÏ»±à¤Ï¾¯¤·¹âÂæ¤Ë¤¢¤ê¤Þ¤¹¡£
¥«¥á¥é¹½¤¨¤Æ¤âƨ¤²¤ë¤É¤³¤í¤«¥Ý¡¼¥¸¥ó¥°¤¹¤ëÄ»¤µ¤ó
·óÏ»±à¤òÎ¥¤ì¤Æ¤ª¼¡¤Ï¶âÂô¾ë¤Ë¤à¤«¤¤¤Þ¤¹¡£
Ëܴݤظþ¤«¤¤¤Þ¤¹¡£
Ëܴݤϸ½ºß¤Ï¼«Á³¤ÎÊõ¸Ë¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
Ϧ¤«¤é¶âÂô»Ô³¹¤ò¸«¤ë
¶âÂô¾ù¤òÎ¥¤ì¤Þ¤¹¡£
¿Í¤Ç¤´¤Ã¤¿ÊÖ¤¹¶á¹¾Ä®»Ô¾ì¤òÈ´¤±¤Æ¤¤¤¤Þ¤¹
¶âÂô±Ø¼êÁ°¤Î¸ÝÌç¤Ç¤¹¡Ä¡ª
¤Ä¤¤¤Ë¡Ä¸Ê¤ÎÂ¤Ç¡ÄÆØ²ì¤«¤é¶âÂô¤Þ¤Ç¤¿¤É¤êÃ夤ޤ·¤¿¡Ä
ËÌΦ¿·´´Àþ¤¬³«Ä̤¹¤ë¤è¤ê¤â¤º¤Ã¤ÈÀè¤Ë¡Ä¤ä¤Ã¤¿¤¾¡ª¡ª¡ª
¤½¤·¤ÆËܾì¤Î¶âÂô¥´¡¼¥´¡¼¥«¥ì¡¼¤â¿©¤¹¡ª¡ª¡ª
¤µ¤é¤Ë¤µ¤é¤Ë¡ª
Ëܷײè¤ÎºÇ½ªÌÜŪ¤À¤Ã¤¿³ô¼çÍ¥ÂÔ·ý¤Ç¥°¥ê¡¼¥ó¼Ö¡ª¡ª
¤½¤¦¡¢¤³¤³¤¬ËÌΦ¡¢¶âÂôDA!
²È²¤Ø¤Î¤ªÅÚ»º¤â¤¿¤¯¤µ¤óÇ㤤¹þ¤ó¤ÇͲ÷Ŭ¤Ê¥µ¥ó¥À¡¼¥Ð¡¼¥É¤Î
¤·¤«¤â¥°¥ê¡¼¥ó¼Ö¤Ç;͵¤ÎµþÅÔµ¢´Ô¤ò¥¥á¤Þ¤·¤¿¡Ä¡ª¥«¥ó¥Ú¥¥À¡ª
¤È¤¤¤¦¤È¤³¤í¤ÇÈá´ê¤Î¿·´´Àþ³«Ä̤ޤǤ˶âÂôÅþã¤ò£ë¡Ä
¤ª¤Ã¤È¤È´Î¿´¤ÎGNSS¤Î¥í¥°¤ÎÈæ³Ó¤Î¤Û¤¦¤Ç¤¹¤¬µ÷Î¥¤¬Ä¹¤¹¤®¤Æ
Èæ³ÓÍѤÎGPS¥í¥¬¡¼GP-102¤È½Å¤Í¤¿¤é¤è¤¯¤ï¤«¤é¤Ê¤¤¤Î¤ÇÍ×½êÍ×½ê¤Ç
³ÈÂ礷¤Æ¤¤¤¤Þ¤¹¡£
ºÇ½é¤Î¥¹¥¿¡¼¥ÈÃÏÅÀ¤Ç¥³¥ó¥Ó¥Ë¤Ë¤è¤Ã¤ÆÄ«ÈÓ¤ò¿©¤Ù¤Þ¤·¤¿¤¬GP102¤Î¥í¥°¤¬
Èô¤ó¤Ç¤ë¤Î¤ËÂФ·¤ÆSAM-M10Q¤Ï¤Þ¤È¤Þ¤Ã¤Æ¤Þ¤¹¤Í¡Á
¹áÎÓË·¤«¤é·óÏ»±à¡¢¶âÂô¾ë¼þÊÕ¤Î¥í¥°Èæ³Ó¤Ç¤¹¡£
¤³¤Á¤é¤âSAM-M10Q¤Î¤Û¤¦¤¬¤¢¤ëÄøÅ٤ޤȤޤäƤޤ¹¤Í¡Ä
¤µ¤é¤Ë³ÈÂç¤Ç¤¹¡ÄËܴݼþÊÕ(²èÁüÃæ±û)¤Îº¹¤ò¸«¤ë¤ÈÎòÁ³¤Ç¤¹¤Í¡Ä¡ª
SAM-M10Q¤Û¤ó¤È¤¹¤¤¤´¤¤¤Ã¤Æ¤Í
¤È¤³¤í¤ÇSAM-M10Q¤Ï¤ß¤Á¤Ó¤¤ò¤É¤Î¥ì¥Ù¥ë¤Þ¤Ç¼õ¿®¤Ç¤¤Æ¤¤¤¿¤Î¤«¡ª¡©
¥¨¥¯¥»¥ëÍøÍѤ·¤Æ±ÒÀ±ID¤òÃê½Ð¤·¤Æ¤ß¤Þ¤·¤¿¡£
NMEAver4.11¤Ï"$GQGSV"¤Ë¥»¥ó¥Æ¥ó¥¹¤¬ÊѤï¤Ã¤ÆPRN¤â½¾Íè¤Î¤â¤Î¤«¤é
ÆÉ¤ßÂØ¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡Ä¡ª
½é¹æµ¡¸å·Ñµ¡¤âÀŻߵ°Æ»ÈÇ(GEO)¤ß¤Á¤Ó¤¤â¤Á¤ã¤ó¤ÈÊ䤷¤Æ¤ª¤ê¤Þ¤·¤¿¡ª
¤ä¤Ã¤¿¤Í¡ù
¤Á¤Ê¤ß¤ËÀ¸¥í¥°¤Ï¤³¤Á¤é¤Ë¤Ê¤ê¤Þ¤¹¡£
¤È¤¤¤¦¤È¤³¤í¤Çublox¤ÎSAM-M10Q¤Î¤¹¤µ¤Þ¤¸¤¤Ç½ÎϤ˴¶Ã²¤È¤·¤Æ¤ª¤ê¤Þ¤¹¡ª
Gms-g9¤¬Í褿»þ¤â¶Ã¤¤Þ¤·¤¿¤¬10ǯ¤ÎºÐ·î¤Î¿Ê²½¤Ï¤ä¤Ï¤ê¤¹¤´¤«¤Ã¤¿¤Ç¤¹¡Ä¡ª
¤½¤·¤Æublox¤Ï¾ÃÈñÅÅή¤¬Â¿¤¤¤È¤¤¤¦Ê諤âʧ¿¡¤µ¤ì¤Æ»ä¤ÎGNSS¥í¥¬¡¼¤â
¤µ¤é¤Ê¤ë¥Ñ¥ï¡¼¥¢¥Ã¥×¤ò²Ì¤¿¤¹¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡ª¡ª¡ª¡ª
¤³¤ì¤«¤é¤â¤Ð¤ê¤Ð¤ê»È¤¤¤Þ¤¯¤Ã¤Æ¤¤¤¤Þ¤¹¤Î¤Ç¥è¥í¥·¥¯¡ª
¤¤¤í¤¤¤í»î¤¹58
¡ü¥Ö¥í¥°²èÁü¤ÎÉü³è¾õ¶·¤Ë¤Ä¤¤¤Æ
¤Í¤à¤¤¤µ¤ó¤Î¥Ö¥í¥°¤Ç¤ÏDropBox¤ò²èÁüÍÑ¥µ¡¼¥Ð¤È¤·¤Æ³èÍѤ·¤Æ
¤ª¤ê¤Þ¤¹¤¬¡¢¤µ¤ë2016ǯ¤ËDropBox¤Î»ÅÍͤ¬ÊѤï¤Ã¤ÆÄ¾¤ê¤ó¤¬½ÐÍè¤Ê¤¯
¤Ê¤Ã¤Æ¤·¤Þ¤¤2012~2016ǯÅÓÃæ¤Þ¤Ç¤Î²èÁü¤¬¸«¤¨¤Ê¤¯¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¤¬¡¢
°¤¤¤³¤È¤ËºÇ½é´ü¤Î2009~2012ǯ¤´¤í¤ÎOneDrive¤Î²èÁü¤âɽ¼¨¤Ç¤¤Ê¤¯
¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤Æ¤³¤Á¤é¤ÎÂбþ¤Ë¤â¼ê¤ò¾Æ¤¤¤Æ¤ª¤ê¤Þ¤¹¡Ä
¸½ºß¤Ï2010ǯʬ¤Þ¤Ç¤ÏOnedrive¤«¤éDropBox¤Ë°Üư¤·¤ÆºÆ¤Óɽ¼¨¤Ç¤¤ë
¤è¤¦¤Ë¤·¤Æ¤ª¤ê¤Þ¤¹¤¬ËÄÂç¤Êºî¶ÈÎ̤ʤΤdz§Íͼó¤òŤ¯¤·¤Æ¤ªÂÔ¤Á
´ê¤¤¤Þ¤¹¡Ä¡£¤¢¤¢Àè¤ÏŤ¤¡Ä
¡üPicoscope7¤¬¥¢¥Ã¥×¥Ç¡¼¥È¤µ¤ì¤¿¤¬¡Ä
Àè·î¡¢Picoscope¤Î¥½¥Õ¥È¥¦¥¨¥¢¤¬6¤«¤é7¤Ë¥á¥¸¥ã¡¼¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×
¤µ¤ì¤Þ¤·¤¿¤¬¡¢ÉÔ°ÂÄê¤Ç»È¤¤Êª¤Ë¤Ê¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£
º£·î¤ËÆþ¤Ã¤Æ7.1.2¤Ë¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤µ¤ì¤ÆÂ¿¾¯¤Ï°ÂÄꤷ¤¿¤«¤Ê¡©
¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¡Ä
I2C¤Ê¤É¤Î¥·¥ê¥¢¥ë¥Ç¥³¡¼¥Ç¥£¥ó¥°¤ò¥×¥ê¥»¥Ã¥È¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò
¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤·¤Æµ¯Æ°¤·¤¿¤é¤¹¤°¸Ç¤Þ¤Ã¤Æ¥×¥í¥°¥é¥à¤¬Íî¤Á¤Æ
¤·¤Þ¤¤¤Þ¤·¤¿¡Äorz¥À¥á¤¸¤ã¤ó¡ª¡ª
¤È¤¤¤¦¤ï¤±¤Ç°ÂÄꤷ¤Æ»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤Þ¤Ç6¤ÎºÇ½ªÈǻȤ¤¤Þ¤·¤ç¡£
¡üSTM32ÍÑI2C¥¿¥¤¥ß¥ó¥°¥ì¥¸¥¹¥¿·×»»µ¡¥¢¥Ã¥×¥Ç¡¼¥È
¼«Ê¬ÍѤ˺î¤Ã¤Æ¤¤¿STM32¸þ¤±I2C¥ì¥¸¥¹¥¿·×»»µ¡¤Ç¤¹¤¬ºÙ¤«¤¤½¤Àµ¤ò
²Ã¤¨¤Æ¸½ºß¤ÏGithub¾å¤Ç´ÉÍý¤ò¤¹¤¹¤á¤Æ¤ª¤ê¤Þ¤¹¡£
º£²ó¤Ï¸ÇÄêÃͰ·¤¤¤·¤Æ¤¤¿Trise,Tfall¤ò¼«Í³¤ËÀßÄê¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
¥Ç¥Õ¥©¥ë¥ÈÃͤÏ100,10¤È¤·¤Þ¤·¤¿¡£Ã±°Ì¤Ïnsec¤Ç¤¹¡£
·×»»µ¡¤Î¥³¥¢¤ÎÉôʬ¤ÏSTM32U5¤Î¥×¥í¥¸¥§¥¯¥È¤Ë¤¢¤ëI2C·×»»µ¡¤ò¥Ù¡¼¥¹
¤È¤·¤Æ¤ª¤ê¤Þ¤¹¤¬¡¢nomalmode(100kHz)¤ÎTrise¤¬640nsec¤ËÀßÄꤵ¤ì¤Æ¤¤¤Æ
¤Á¤ç¤Ã¤È¤ª¤«¤·¤¤(ÇÈ·Á¤â)¤Î¤ÇSTM32F3&STM32F0¸þ¤±·×»»µ¡¤ÎÃͤò½àµò¤È
¤·¤Þ¤·¤¿¡£
¤¦¡¼¤à¤Ô¤Ã¤¿¤ê¤ÎÃͤˤʤé¤Ê¤¤¤Ð¤«¤ê¤«¤Á¤ç¤Ã¤È¥¯¥í¥Ã¥¯¼þÇÈ¿ô¤¬
¤É¤¦¤·¤Æ¤âÃÙ¤á¤Ë½Ð¤Æ¤·¤Þ¤¦·¹¸þ¤¬¤¢¤ê¤Þ¤¹¤Í¡Ä
¤Ê¤ª¡¢CubeMX¤âƱ¤¸·¹¸þ¤¬¤¢¤ë¤Î¤ÇºÙ¤«¤¤¤È¤³¤í¤òÆÍ¤µÍ¤á¤¿¤¤Êý¤Ï
¥Ä¡¼¥ë¤Ç¤¶¤Ã¤È»»½Ð¤·¤Æ»Ä¤ê¤Ï¥ª¥·¥í¤È¤Ë¤é¤á¤Ã¤³¤·¤ÆÆÍ¤¹ç¤ï¤»¤Æ
¹Ô¤¯¤Î¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£¤Ã¤Æ¤¤¤¤²Ã¸º¤Ê»ä¡£
¡üSTM32¤ÇI2C(¥Þ¥¹¥¿¡¼)¤¬Æ°¡Ä¤«¤Í¤§¡ª¡ª¡ª£±¡ª
I2C¥Ð¥¹¤Ïºòº£¤ÎÅŻҹ©ºî¤Ç¥»¥ó¥µ¤äɽ¼¨¥Ç¥Ð¥¤¥¹Åù¤Ç¿ÍѤµ¤ì¤Æ¤¤¤ë
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î°ì¤Ä¤Ç¤¹¤¬¡¢STM32¤âI2C¤ò¥Ï¡¼¥É¥¦¥¨¥¢¥ì¥Ù¥ë¤Ç
¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤ê¤Þ¤¹¡£¤·¤«¤·STM32¤Ç¥Þ¥¹¥¿¡¼¤È¤·¤Æ»ÈÍѤ¹¤ëºÝ¤Ë¤Ï
²¼µ¤ÎÂ礤ÊÃí°ÕÅÀ¤¬¤¢¤ê¤Þ¤¹¡£
¡STM32¤ÏI2C´ðËÜŪ¤Ë¥¹¥ì¡¼¥Ö¥Ç¥Ð¥¤¥¹¤È¤·¤ÆÆ°¤¤¤Æ¤¤¤ë¡£
¢½é´ü²½¤Î¼ê½ç¤ò´Ö°ã¤¨¤ë¤È¤¤¤¤Ê¤êBUSY¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤·¤Þ¤¦¡£
¡¤Ë¤Ä¤¤¤Æ¤ÏSTM32¤ÎÁ´¼ï¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë¤ËÌÀµ¤µ¤ì¤Æ
¤ª¤ê¤Þ¤¹¡£¥¹¥¿¡¼¥È¥Ó¥Ã¥È¤ò¼«¤éÀ¸À®¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥Þ¥¹¥¿¡¼¤Ë
ÀÚ¤êÂØ¤ï¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¥Ç¡¼¥¿¤Î¤ä¤ê¼è¤ê¤¬½ª¤ï¤Ã¤¿¤é¼«Æ°Åª¤Ë¥¹¥ì¡¼¥Ö¤ËÌá¤ê¤Þ¤¹¡£
¤Ç¡¢¤³¤Î¥¹¥ì¡¼¥Ö¤È¤·¤Æ¤ÎưºîÃæ¤Ë³°Éô¤«¤é¥¹¥¿¡¼¥È¥Ó¥Ã¥È¤ËÁêÅö
¤¹¤ë¿®¹æ¤¬¶öÁ³À¸À®¤µ¤ì¤Æ¤·¤Þ¤¦¤ÈBUSY¥Õ¥é¥°¤¬¤ª¤ÃΩ¤Ã¤Æ¤·¤Þ¤¦
¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡ª¡ª¡ª¡ª
¤³¤ì¤ÏÆâÉôÁàºî¤«¤é¤Ë¤âÇȵڤ·¡¢¢¤Î¾õÂÖ¤¬À®Î©¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤Ä¤Þ¤êGPIO¤ÎÁàºî¤ò¤¹¤ë¤À¤±¤ÇBUSY¥Õ¥é¥°¤¬¤ª¤ÃΩ¤Ã¤Æ¤·¤Þ¤¦¤ï¤±¤Ç¤¹¡£
¢¤Î´Ö°ã¤Ã¤¿¼ê½ç¤Î¶ñÂÎŪÎã¤È¤Ï¡¢»ÈÍѤ¹¤ëI2C¤ÎGPIO¥Ý¡¼¥È¤ÎAlternate
Function¤ò¤¹¤ëÁ°¤ËI2C¤Î¥¯¥í¥Ã¥¯¤ò͸ú¤Ë¤·¤Æ¤·¤Þ¤¦¤³¤È¤Ç¤¹¡£
¤³¤ì¤ò¤ä¤ë¤ÈSTM32F1,STM32F2,STM32F4¤Ç¤Ï100¡ó¤Î³ÎΨ¤ÇBUSY¥Õ¥é¥°¤¬
¤ª¤ÃΩ¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡Ä¤â¤¦¥Ó¥ó¥Ó¥ó¤Ë¡Ä¡ª
¼ÂºÝ¤ËBUSY¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤·¤Þ¤Ã¤¿²èÁü¤Ç¤¹¡£
STM32F411-Nucleo¤Ç³Îǧ¤·¤Æ¤¤¤Þ¤¹¤¬I2C¤Î¥¯¥í¥Ã¥¯¤ò͸ú¤Ë¤·¤¿
¸å¤ËGPIO¤ÎÀßÄê¤ò¹Ô¤¦¤ÈI2C¤ÎÀßÄê¤ò²¿¤â¤·¤Æ¤Ê¤¤¤Î¤ËSR¥ì¥¸¥¹¥¿¤¬
2(BUSY¥Õ¥é¥°ON)¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤½¤ó¤Ê¤ï¤±¤ÇBUSY¥Õ¥é¥°¤ò¤ª¤ÃΩ¤Æ¤º¤ËI2C¤ò³Î¼Â¤Ëưºî¤µ¤»¤ë¼ê½ç¤Ï
°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
1.GPIO¥¯¥í¥Ã¥¯Í¸ú
2.GPIO¤ÎÀßÄê(AF´Þ¤à)
3.I2C¤Î¥¯¥í¥Ã¥¯Í¸ú
4.I2C¤ÎÀßÄê
¾åµ½çÈÖ¤ò¼é¤ë¤È¤¤¤¤Ê¤êI2C¤¬Æ°¡Ä¤«¤Í¤§¡ª¤È¤¤¤¦Èá·à¤ÎȯÀ¸³ÎΨ¤¬
²¼¤¬¤ë¤È»×¤¤¤Þ¤¹¡£ÆÃ¤Ë¥Ð¥°¥³¡¼¥ÉÀ¸À®´ï¤ÎCubeMX¤ò»È¤¦ºÝ¤ÏÀ¸À®
¥³¡¼¥É¤¬¤³¤Î½çÈÖ¤ò¼é¤Ã¤Æ¤¤¤ë¤«³Îǧ¤·¡¢¤µ¤é¤Ë¥ª¥·¥í¥¹¥³¡¼¥×¤Ç
¼ÂºÝ¤ÎI2C¥Ð¥¹¤ÎÇÈ·Á¤òɬ¤º³Îǧ¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡ª¡ª¡ª
¤Á¤Ê¤ß¤ËST¥Þ¥¤¥¯¥í¤ÎÆüËÜ¥µ¥¤¥È¤â½é´ü²½½çÈÖ¤ÎÃí°ÕÅÀ¤Ë¤È¤·¤Æ
Ʊ¤¸¤è¤¦¤Êµ½Ò¤¬¤¢¤ê¤Þ¤¹¡£
»ä¤ÎÃΤë¸Â¤ê¸í¤Ã¤¿¼ê½ç¤ÇBUSY¤¬Î©¤Ã¤Æ¤·¤Þ¤¦Éʼï¤Ï¥¿¥¤¥ß¥ó¥°¥ì¥¸¥¹¥¿¤Î
µ½Ò¤¬´ÊÁǤÊSTM32F1,STM32F2,STM32F4,STM32L1¤Î¤ß¤È¤Ê¤ê¤Þ¤¹¤¬¡¢
³Î¼Â¤Êưºî¤Î¤¿¤á¤Ë¾¤ÎÉʼï¤Ç¤â¾åµ½é´ü²½¼ê½ç¤ò¼é¤ë¤Ù¤¤À¤È»×¤¤¤Þ¤¹¡£
Ï¢Íí¡¦¼ÁÌ䡦ÌÈÀդϢ¬¤Î¥ê¥ó¥¯¤ò
¢SNS¤â¤ä¤Ã¤Æ¤Þ¤¹¢
powered by ¤Þ¤á¤ï¤¶- ARM/STM32 (107)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (11)
- FPGA (4)
- GPS/GNSS (19)
- MISC (77)
- STM8 (1)
- Wireless¤Ê¥¢¥ì (16)
- ¥Ö¥é¥¦¥¶¥Ù¥ó¥Á¥Þ¡¼¥¯ (28)
- ÆüËܤμ«Á³ÊâÆ» (23)
- Âç¼þ²óÃÙ¤ì¤ÇCortex-M33¤ÈSTM32L5¤Ï¤Â¤á¤Þ¤·¤¿
¢Í ¤Í¤à¤¤ (08/07) - Âç¼þ²óÃÙ¤ì¤ÇCortex-M33¤ÈSTM32L5¤Ï¤Â¤á¤Þ¤·¤¿
¢Í ¤Ò¤«¤ï (08/05) - 1Wire²¹ÅÙ¥»¥ó¥µDS18B20¤Îµ¶Êª¤òÄɤ¨¡ª
¢Í ¤Í¤à¤¤ (04/26) - 1Wire²¹ÅÙ¥»¥ó¥µDS18B20¤Îµ¶Êª¤òÄɤ¨¡ª
¢Í (04/08) - Ãæ¹ñ¼«Á³ÊâÆ»¤ò±ý¤¯ -ËÌȲ¡ª¸©¶¤ò±Û¤¨¤ÆÄ»¼è¸©¤Ë¿¯Æþ¤»¤è¡ª-
¢Í ¤Í¤à¤¤ (12/23) - Ãæ¹ñ¼«Á³ÊâÆ»¤ò±ý¤¯ -ËÌȲ¡ª¸©¶¤ò±Û¤¨¤ÆÄ»¼è¸©¤Ë¿¯Æþ¤»¤è¡ª-
¢Í ¤Ò¤«¤ï (12/18) - Ãæ¹ñ¼«Á³ÊâÆ»¤ò±ý¤¯ -ËÌȲ¡ª¸©¶¤ò±Û¤¨¤ÆÄ»¼è¸©¤Ë¿¯Æþ¤»¤è¡ª-
¢Í ¤Ò¤«¤ï (12/18) - ¤¤¤í¤¤¤í»î¤¹51
¢Í ¤Í¤à¤¤ (06/26) - ¤¤¤í¤¤¤í»î¤¹51
¢Í ¤Ò¤«¤ï (06/10) - STM32G0»È¤Ã¤Æ¤ß¤ë4 -1wire¥Ç¥Ð¥¤¥¹¤ò¤¤¤í¤¤¤í»È¤Ã¤Æ¤ß¤ë-
¢Í ¤Í¤à¤¤ (12/14)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (7)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.