рдкрд░рд┐рдЪрдп
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЪреВрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдирд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЖрдЧреЗ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЗрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯрдХрд╛рд░реНрдб рд░реАрдбрд░ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдпрд╛ рд╕реНрдорд╛рд░реНрдЯрдХрд╛рд░реНрдб рдЪрд┐рдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рддрдм рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реБрдЖ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рд░реВрд╕реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рддреЛ рдЗрд╕рд╕реЗ рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рдж рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдмрд╛рдж рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рдЖрдПрдЧреАред рдФрд░ USB рдЯреЛрдХрди рдпрд╛ рд╕реНрдорд╛рд░реНрдЯрдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдереЗ: рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХрд╛рдлреА рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (M2M рдпрд╛ IoT рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдореЙрдбреНрдпреВрд▓), рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд░рдЦрд░рдЦрд╛рд╡-рдореБрдХреНрдд рдореЛрдб рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рдФрд░ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рддрд╛рдкрдорд╛рди рд░реЗрдВрдЬ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдП 7001 рдЪрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ I2C рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдкреАрдПрд╕реА рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ
рдореИрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ред рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╡реИрд╕реЗ рднреА рдЗрд╕рд╕реЗ рдЕрд╡рдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдЕрднреА рднреА рдХрд╣рдиреЗ рд▓рд╛рдпрдХ рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдкрдирдПрд╕рдПрд╕рдПрд▓, рдпрд╛ рдХрдИ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреАред
рд╕рдорд╕реНрдпрд╛рдПрдБ рддрдм рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХрд╛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрдХрд░рдг рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдХрд░реАрдмреА рдЕрдзреНрдпрдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рдореБрдЦ рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛, рдЪрд╛рдмрд┐рдпрд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЕрдиреНрдп рд╕реВрдХреНрд╖реНрдо рдорд╛рдорд▓реЗ рдкреИрджрд╛ рдХрд░рдирд╛ред
рдХреБрдЫ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрд┐рдд рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдЕрдВрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдирдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдмрд╛рдж рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдпрд╛ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдЪрд┐рдк рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕реЗ "рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреА рдЬрдбрд╝" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рджрд░реНрджрдирд╛рдХ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛рдУрдВ рдореЗрдВ рд▓рдВрдмреЗ рдЕрдиреБрд╕рдВрдзрд╛рди рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

I2C рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░
рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдП 7001 рдЪрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ I2C рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд┐рдо рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЪрд┐рдк
рдЕрд▓рд╛рджреАрди рдЖрд░рдбреА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд░реНрдорд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдЬреЛ рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ A7001AG (рд╕рд┐рдХреНрдпреЛрд░ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░) NXP рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд╣реИред рдЪрд┐рдк рдкрд░ рдбреЗрдЯрд╛рд╢реАрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░,
рдП 7001рдПрдЬреА рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣реИ рдЬреЛ рдПрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ
рдХреЙрдкреЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рд╕рд┐рдХ 80C51 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрдирдзрд┐рдХреГрдд рдкрд╣реБрдВрдЪ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
рдкрд╛рд╡рд░ рд╕реЗрд╡рд┐рдВрдЧ рдореЛрдб рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ 50 ╬╝A рдХреА рдЦрдкрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ 1.62V рд╕реЗ 5.5V рдХреА рд╕реАрдорд╛ рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рд╡реЛрд▓реНрдЯреЗрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ ┬░25 ┬░ C рд╕реЗ + 85 ┬░ C рддрдХ рдХреЗ рддрд╛рдкрдорд╛рди рдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, I2C рджрд╛рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ 100 kbit / s рддрдХ рдХреА рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрдИ рдЖрд╡рд╛рд╕ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдореИрдВ HVQFN32 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реБрдЖред рдпрд╣ рдПрдХ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ 32 рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде 5x5x0.85 рдорд┐рдореА рдФрд░ 0.5 рдорд┐рдореА рдХреА рдкрд┐рдЪ рдХреЛ рдорд╛рдкрддрд╛ рд╣реИред
рдорд╛рдорд▓реЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐:

рдЙрд╕рдХрд╛ рдкрд┐рдирдЖрдЙрдЯ:

A7001 рдЪрд┐рдк рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рди рдкреНрд░рдгрд╛рд▓реА
рд╣реЗрд▓реНрдЯ рдХреЗ ESP32 рд╡рд╛рдИрдлрд╛рдИ рдХрд┐рдЯ 32 рдмреЛрд░реНрдб рдХреЛ I2C рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдореЗрдЬрдмрд╛рди рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреА рд▓рд╛рдЧрдд 1000 рд░реВрдмрд▓ рд╕реЗ рдХрдо рд╣реИ, рдЗрд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд╛рдпрд░реНрдб рдФрд░ рд╡рд╛рдпрд░рд▓реЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ, рд▓рд┐рдерд┐рдпрдо рдмреИрдЯрд░реА рдХреЛ рдЪрд╛рд░реНрдЬрд┐рдВрдЧ рд╕рд░реНрдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрдЯрд░ рд╣реИ, рд╕рд╛рде рд╣реА 0.96-рдЗрдВрдЪ рдХрд╛ рдУрдПрд▓рдИрдбреА рдбрд┐рд╕реНрдкреНрд▓реЗ рднреА рд╣реИред

рд╡рд┐рднрд┐рдиреНрди IoT рдФрд░ M2M рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдЧрднрдЧ рд╕рд╣реА рдкреНрд░рдгрд╛рд▓реА, рдЬрд┐рд╕реЗ рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдмреЛрд░реНрдб рдХреЛ рджреЗрд╢реА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдФрд░ Arduino IDE рджреЛрдиреЛрдВ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдорд╛рдирдХ Arduino IDE рдкрд░ рдмрд╕ рдЧрдпрд╛ред
рд╕рд░реНрдХрд┐рдЯ рдЖрд░реЗрдЦ
A7001 рдЪрд┐рдк рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрдХрд┐рдЯ рдЖрд░реЗрдЦ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдбреЗрдЯрд╛рд╢реАрдЯ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЯрд░реНрдорд┐рдирд▓ 22 (рд░реАрд╕реЗрдЯ рд╕рд┐рдЧреНрдирд▓ RST_N) рдореЗрдВ рдЙрдЪреНрдЪ рдХреНрд╖рдорддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рд░реНрдХрд┐рдЯ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖред "рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкреНрд░рд╣рд╛рд░" рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╛рд╡рд░ рдХрдВрдбрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдкреБрд▓-рдЕрдк рд░реЛрдХрдиреЗрд╡рд╛рд▓рд╛ рдЖрд░ 4 рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╕рдВрдЪрд╛рд▓рди рдХреНрд╖рдорддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХреА рдЧрдИ рдереАредрдЕрджреНрдпрддрди: рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реНрдХреАрдорд╛ рдбреЗрдЯрд╢реАрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЬрдмрдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рд╡рд░рдг рдиреЗ рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛RST_N - рд░реАрд╕реЗрдЯ рдЗрдирдкреБрдЯ, рд╕рдХреНрд░рд┐рдп LOW

рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рд╡рд░ рдФрд░ I2C рд╕рд┐рдЧреНрдирд▓ рдЪрд╛рд░ рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рддрд╛рд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ ESP32 рдореЙрдбреНрдпреВрд▓ рдЦреБрдж рд╣реА рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпреВрдПрд╕рдмреА рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреВрд░реЗ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдкрд╛рд╡рд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХреЗ рдФрд░ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рднрд░реЗрдВред

рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб I2C рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ I2C рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛, рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (GOST R ISO / IEC 7816-3-2013) рдХреА рднреМрддрд┐рдХ рдкрд░рдд рдХреЛ I2C (SMBus) рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдмрд╛рдХреА рд╕рдм рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛ APDU рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GOST R ISO / IEC 7816-4-2013 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдбред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдкрд╛рд░рдВрдкрд░рд┐рдХ APDU рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреБрдЫ "buts" рднреА рдереЗред
- I2C рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (SMBus) ru.wikipedia.org/wiki/I%C2%B2C рдЧреБрд▓рд╛рдо рд╕рдВрдмреЛрдзрди рд╡рд╛рд▓реА рдПрдХ рдмрд╕ рд╣реИ, рдЬреЛ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ UART рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдореВрд▓рднреВрдд рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИ, рдЬреЛ рдмрд┐рдВрджреБ-рджрд░-рдмрд┐рдВрджреБ рдЖрдзрд╛рд░ рдкрд░ рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рднреА рд╕рдВрдЪрд╛рд░рд┐рдд рдбреЗрдЯрд╛ (APDU рдХрдорд╛рдВрдб) I2C рдмрд╕ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ "рдкреИрдХ" рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
- рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЕрдкрдиреЗ рд░реАрд╕реЗрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдмрд┐рдЬрд▓реА рдмрдВрдж рдХрд░рдХреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдб рд░реАрдбрд░ рд╕реЗ рдХрд╛рд░реНрдб рдХреЛ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗред рд░реАрд╕реЗрдЯ рдХреЗ рдмрд╛рдж, рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдкрд╣рд▓реЗ рдПрдЯреАрдЖрд░ (рдЙрддреНрддрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ) рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред
рдФрд░ I2C рдмрд╕ рдкрд░ рдЪрд┐рдк рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдореБрджреНрд░рд┐рдд рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдореЗрдВ рдорд┐рд▓рд╛рдк рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдХреНрд░реЗрдХрд┐рдЯ рдХрд╛ рдкрд╛рд╡рд░ рд╕рдкреНрд▓рд╛рдИ рд╕рд░реНрдХрд┐рдЯ рдпрд╛ рд░реАрд╕реЗрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЪрд┐рдк рдХрд╛ рд░реАрд╕реЗрдЯ I2C рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕реНрддрд░ рдкрд░, рд╕рд╣рд┐рдд, рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрди рдФрд░ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЛ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб I2C рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рд╡рд┐рд╡рд░рдг NXP рд╡реЗрдмрд╕рд╛рдЗрдЯ
www.nxp.com/docs/en/supporting-information/AN12207.pdf рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ
рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб I2C рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЦреЛрдЬ рдиреЗ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдерд╛ рдФрд░ рдЬреЛ рдХреБрдЫ рдерд╛, рдЙрд╕рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛ред
Arduino IDE рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдЪ рд╕реНрд░реЛрдд#include <Wire.h> #include <vector> // I2C address on chip A7001 #define ADDR_A7001 static_cast<uint16_t>(0x48) using namespace std; typedef std::vector<uint8_t> vect; //-------------------------------------------------------------------------- // Output dump data by serial port void vect_dump(const char * prefix, const vect & v, const size_t start = 0, const size_t count = 0) { if(prefix) { Serial.print(prefix); } if(v.size() < start) { Serial.println("Empty"); return; } for(size_t i=0; i < (v.size()-start) && (count == 0 || i < count); i++) { uint8_t b = v[start + i]; // Format output HEX data if(i) Serial.print(" "); if(b < 0x0F) Serial.print("0"); Serial.print(b, HEX); } Serial.println(""); } //-------------------------------------------------------------------------- // Send array bytes by I2C to address A7001 and read response result_size bytes vect sci2c_exchange(const vect data, const uint8_t result_size) { Wire.beginTransmission(ADDR_A7001); Wire.write(data.data(), data.size()); Wire.endTransmission(false); Wire.requestFrom(ADDR_A7001, result_size, true); //delay(1); vect result(result_size, 0); if(result_size >= 2) { result[0] = Wire.read(); // Data size CDB result[1] = Wire.read(); // PCB for(size_t i=2; i<result.size()-2 && Wire.available(); i++) { result[i+2] = Wire.read(); } } return result; } //-------------------------------------------------------------------------- // Read Status Code uint8_t sci2c_status(const char * msg = nullptr) { vect v = sci2c_exchange({0b0111}, 2); uint8_t status = v[1] >> 4; if(msg) { Serial.print(msg); // Prefix switch(status) { case 0b0000: Serial.println("OK (Ready)"); break; case 0b0001: Serial.println("OK (Busy)"); break; case 0b1000: Serial.println("ERROR (Exception raised)"); break; case 0b1001: Serial.println("ERROR (Over clocking)"); break; case 0b1010: Serial.println("ERROR (Unexpected Sequence)"); break; case 0b1011: Serial.println("ERROR (Invalid Data Length)"); break; case 0b1100: Serial.println("ERROR (Unexpected Command)"); break; case 0b1101: Serial.println("ERROR (Invalid EDC)"); break; default: Serial.print("ERROR (Other Exception "); Serial.print(status, BIN); Serial.println("b)"); break; } } return status; } static uint8_t apdu_master_sequence_counter = 0; // Sequence Counter Master, Master to Slave //-------------------------------------------------------------------------- // Send APDU void sci2c_apdu_send(const vect apdu) { vect_dump("C-APDU => ", apdu); vect data(2, 0); // 0x00 - Master to Slave Data Transmission command + reserve to length data.insert(data.end(), std::begin(apdu), std::end(apdu)); data[0] |= (apdu_master_sequence_counter << 4); if(++apdu_master_sequence_counter > 0b111) { apdu_master_sequence_counter = 0; } data[1] = data.size() - 2; sci2c_exchange(data, 2); delay(10); sci2c_status(""); } //-------------------------------------------------------------------------- // Receive APDU vect sci2c_apdu_recv(uint8_t result_size) { Wire.beginTransmission(ADDR_A7001); Wire.write(0b0010); // 0010b - Slave to Master Data Transmission command Wire.endTransmission(false); Wire.requestFrom(ADDR_A7001, result_size, true); vect result(result_size, 0); for(size_t i=0; i<result.size() && Wire.available(); i++) { result[i] = Wire.read(); } vect_dump("R-APDU <= ", result); return result; } //-------------------------------------------------------------------------- void setup(){ Wire.begin(); Serial.begin(9600); while (!Serial); Serial.println(""); Serial.println("Smart Card I2C Protocol Arduino demo on A7001"); Serial.println(""); sci2c_exchange({0b00001111}, 2); //The bits b0 to b5 set to 001111b indicate the Wakeup command. sci2c_status("Status Wakeup: "); sci2c_exchange({0b00001111}, 2); //The bits b0 to b5 set to 001111b indicate the Wakeup command. sci2c_status("Status Wakeup: "); // Soft Reset sci2c_exchange({0b00011111}, 2); //The bits b0 to b5 set to 011111b indicate the Soft Reset command. delay(5); // Wait at least tRSTG (time, ReSeT Guard) sci2c_status("Status SoftReset: "); // Read ATR vect ATR = sci2c_exchange({0b101111}, 29+2); //The bits b0 to b5 set to 101111b indicate the Read Answer to Reset command. sci2c_status("Status ATR: "); vect_dump("ATR: ", ATR, 2); // Parameter Exchange // The bits b0 to b5 set to 111111b of the PCB send by the master device indicate the Parameter Exchange command. // The bits b6 and b7 of the PCB send by the master device code the CDBIsm,max(Command Data Bytes Integer, Slave to Master, MAXimum) vect CDB = sci2c_exchange({0b11111111}, 2); sci2c_status("Status CDB: "); vect_dump("CDB: ", CDB, 1); // Further examples of the exchange of APDU // Exchanges APDU from exmaple chapter sci2c_apdu_send({0x00, 0xA4, 0x04, 0x04, 0x04, 0x54, 0x65, 0x73, 0x74, 0x00}); sci2c_status("Status Test send: "); sci2c_apdu_recv(3+1); // R-APDU size + 1 byte PBC sci2c_status("Status Test recv: "); // Read Card Production Life Cycle sci2c_apdu_send({0x80, 0xCA, 0x9F, 0x7F, 0x00}); sci2c_status("Status card LC send: "); sci2c_apdu_recv(0x30+1); // R-APDU size + 1 byte PBC sci2c_status("Status card LC recv: "); // Read Card Info sci2c_apdu_send({0x80, 0xCA, 0x00, 0x66, 0x00}); sci2c_status("Status card info send: "); sci2c_apdu_recv(0x51+1); // R-APDU size + 1 byte PBC sci2c_status("Status card info recv: "); // Read Key Info sci2c_apdu_send({0x80, 0xCA, 0x00, 0xE0, 0x00}); sci2c_status("Status key send: "); sci2c_apdu_recv(0x17+1); // R-APDU size + 1 byte PBC sci2c_status("Status key recv: "); // Again exchanges APDU from exmaple chapter sci2c_apdu_send({0x00, 0xA4, 0x04, 0x04, 0x04, 0x54, 0x65, 0x73, 0x74, 0x00}); sci2c_status("Status Test send: "); sci2c_apdu_recv(3+1); // R-APDU size + 1 byte PBC sci2c_status("Status Test recv: "); Serial.println("Done!\n"); } //-------------------------------------------------------------------------- void loop() { delay(100); }
I2C рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдорд╛рдирдХ рд╡рд╛рдпрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб I2C рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдФрд░ рдкрдврд╝рддреЗ рд╕рдордп рдПрд╕реАрдХреЗ рдФрд░ рдПрдирдПрдХреЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рд╕реЗ рдЪрд░-рд▓рдВрдмрд╛рдИ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╣реА рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╣рд╛рдВ, рдФрд░ рд╡рд╛рдпрд░ рдХреЛрдб рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдгреЛрдВ рдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди
рдЯреИрдореНрдмреЛрд░рд┐рди рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХреБрдЫ рдиреГрддреНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдИ рд▓реАрдЯрд░ рдХреЙрдлреА, рдпреИрдВрдбреЗрдХреНрд╕ рдФрд░ рдЧреВрдЧрд▓ рдореЗрдВ рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдЧреБрдЧреНрд▓рд┐рдВрдЧ, рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ рдЧрдпрд╛ред
Wire.write ( ); Wire.endTransmission (false); Wire.requestFrom (ADDR_A7001, 2, true);
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди
рдПрдВрдбрдЯреНрд░рд╛рдВрд╕рдореАрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж I2C рдмрд╕ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдИрдПрд╕рдкреА 32-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЙрд▓
рдПрдВрдбреЛрд░реНрд╕рдореЗрдВрдЯ (рдЭреВрдареЗ) рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рдпрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЙрд▓
рдлреЙрд░рдлреНрд░реЗрдо (рдЯреНрд░реВ) рдХреЗ рджреМрд░рд╛рди , рдЬрдмрдХрд┐ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрддрд╛рд░рдмрджреНрдз рд╣реИред рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХрд░рдирд╛ред
рдРрд╕реА рд╕реАрдорд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдХреБрдЫ "рдмреИрд╕рд╛рдЦреА" рдмрдирд╛рдиреА рдкрдбрд╝реАрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рдмрд┐рдирд╛ A7001 рдЪрд┐рдк рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЪрд░ рд▓рдВрдмрд╛рдИ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ (рдЕрд░реНрдерд╛рдд, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди I2C рдмрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп APDU рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ I2C рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдкрд╛рд╡рд░ рдЯреЙрдЧрд▓ рд╕реНрд╡рд┐рдЪ рд╣рдорд╛рд░рд╛ рд╣реИред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрдЧрд░ рдЗрди рдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рджреМрд░рд╛рди рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЕрдЪрд╛рдирдХ рдХреЛрдб рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рддреЛ рдмрд┐рдЬрд▓реА рдмрдВрдж рдФрд░ рдЪрд╛рд▓реВ рдХрд░реЗрдВред рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдПрдХ рдЙрдЪреНрдЪ рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
A7001 рдЪрд┐рдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореИрдВ рдХрдИ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
vect_dump - рдбрд┐рдмрдЧ рдкреЛрд░реНрдЯ рдореЗрдВ HEX рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдбрдВрдк рдбреЗрдЯрд╛;
Sci2c_exchange - I2C рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╕рд░рдгреА рднреЗрдЬреЗрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдкрдврд╝реЗрдВ;
Sci2c_status - microcircuit рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдкрдврд╝реЗрдВ рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдбрд┐рдмрдЧ рдкреЛрд░реНрдЯ рдореЗрдВ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ;
Sci2c_apdu_send - APDU рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВ;
Sci2c_apdu_recv - APDU рдХрдорд╛рдВрдб рдХрд╛ рдЬрд╡рд╛рдм рдкрдврд╝реЗрдВред
рдорд╛рдЗрдХреНрд░реЛрдЪрд┐рдк рдЖрд░рдВрднреАрдХрд░рдг
рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб I2C рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЪрд┐рдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рддреАрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рд░рд┐рдмреВрдЯ (рд╢реАрдд рдпрд╛ рд╢реАрддрд▓ рд░реАрд╕реЗрдЯ), рдкрдврд╝реЗрдВ рдПрдЯреАрдЖрд░ (рд░реАрд╕реЗрдЯ рдХрд╛ рдЬрд╡рд╛рдм рдкрдврд╝реЗрдВ) рдФрд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреИрд░рд╛рдореАрдЯрд░ (рдорд╛рд╕реНрдЯрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреИрд░рд╛рдореАрдЯрд░) рд╕реЗрдЯ рдХрд░реЗрдВред рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЪрд┐рдк APDU рдХрдорд╛рдВрдб рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
рдирд░рдо рд░реАрд╕реЗрдЯ
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╣рдо рдПрдХ рд░рд┐рдмреВрдЯ рдХрдорд╛рдВрдб рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдордп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ:
sci2c_exchange ({0b00011111}, 2); delay(5);
рд░рд┐рд╕реЗрдЯ рдХрд╛ рдЙрддреНрддрд░ рдкрдврд╝реЗрдВ
рдПрдЯреАрдЖрд░ рдкрдврд╝рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рднреА рдкрдврд╝реЗрдВред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рд╕реАрдбреАрдмреАрдПрдЯреАрдПрд╕, рдореИрдХреНрд╕ (рдХрдорд╛рдВрдб рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯреНрд╕, рдЙрддреНрддрд░ рдХреЛ рд░реАрд╕реЗрдЯ, рдореИрдХреНрд╕рд┐рдордо) 29 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
vect ATR = sci2c_exchange({0b101111}, 29+2);
ATR рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВ:
1E 00 00 00 B8 03 11 01 05 B9 02 01 01 BA 01 01 01 0 0 41 41 30 30 31 43 47 20 32 34 32 52 31рдЬрд╣рд╛рдВ 1E рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ (29 рдмрд╛рдЗрдЯреНрд╕ + рдкреАрд╕реАрдмреА рдХрд╛ 1 рдмрд╛рдЗрдЯ) рд╣реИ рдФрд░ 00 рдкреАрд╕реАрдмреА (рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдмрд╛рдЗрдЯ) рд╣реИ, рдЬреЛ 0 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдбреЗрдЯрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ (рдкреАрд╕реАрдмреА рдХрд╛ рдПрдХ рдмрд╛рдЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рддреАрди) рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ TLV рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИ:
B8h -
рдирд┐рдореНрди рд╕реНрддрд░ рдХреА рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ , рдЖрдХрд╛рд░ 3 рдмрд╛рдЗрдЯреНрд╕ (
11h 01h 05h );
рдмреА 9
рдПрдЪ -
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ , рдЖрдХрд╛рд░ рдореЗрдВ 2 рдмрд╛рдЗрдЯреНрд╕ (
01h 01h );
BAh -
рдЙрдЪреНрдЪ рдкрд░рдд рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ , рдЖрдХрд╛рд░ рдореЗрдВ 1 рдмрд╛рдЗрдЯ (
01h );
BBh -
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ , 13 рдмрд╛рдЗрдЯреНрд╕ (
41 37 30 30 31 43 47 20 32 32 32 52 31 )ред
рдЪрд┐рдк рдХреЗ рд░реАрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рдирдирд┐рдореНрди рд╕реНрддрд░ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ :
11h - рд╕рдорд░реНрдерд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ
рдкреНрд░рдореБрдЦ рдФрд░ рдорд╛рдореВрд▓реА рд╕рдВрд╕реНрдХрд░рдгред
рддреНрд░реБрдЯрд┐ рдкрд╣рдЪрд╛рди рдХреЛрдб :
01h - LRC (рдЕрдиреБрджреИрд░реНрдзреНрдп рдЕрддрд┐рд░реЗрдХ рдХреЛрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреА рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЕрдЦрдВрдбрддрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
рдлрд╝реНрд░реЗрдо рд╡реЗрдЯрд┐рдВрдЧ рдкреВрд░реНрдгрд╛рдВрдХ (рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИ) :
05 рдПрдЪ - рджреЛ рдХрдорд╛рдВрдб рдХреЗ рдмреАрдЪ рдЕрдзрд┐рдХрддрдо рд╡рд┐рд▓рдВрдмред рдорд╛рдиреЛрдВ рдХреА рд╕реАрдорд╛ 10 ms рд╕реЗ 5120ms рддрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ 5120ms рд╣реИред рдорд╛рди рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ T = 10ms x 2 ^ FWI рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ 320 рдПрдордПрд╕ (10ms x 2 ^ 5) рдХреА рджреЗрд░реА рджреЗрддрд╛ рд╣реИред
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ - рджреЛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ,
01h 01h , рдЬреЛ рд╕рдорд░реНрдерд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рддрд╛ рд╣реИред рдЗрди рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдорддрд▓рдм APDU рдкреНрд░реЛрдЯреЛрдХреЙрд▓ [GOST R ISO / IEC 7816-3-2013] рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ, рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрд╕реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЙрдЪреНрдЪ рдкрд░рдд рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ - рд╕рдВрдЦреНрдпрд╛
01h рдХрд╛ рдЕрд░реНрде рд╣реИ рд▓рдШреБ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд APDU рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдХрд╛рд░ рдореЗрдВ 15 рдмрд╛рдЗрдЯреНрд╕ рддрдХ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдирдХ [GOST R ISO / IEC 7816-4-2013] рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ "
рдП 7001 рд╕реАрдЬреА 242 рдЖрд░ 1 " рд╣реИред
рдорд╛рд╕реНрдЯрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб:
vect CDB = sci2c_exchange({0b11111111}, 2); sci2c_status("Status CDB: "); vect_dump("CDB: ", CDB, 1);
рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ:
CCh - (11001100b) рдбреЗрдЯрд╢реАрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, 4 рдФрд░ 5 рдмрд┐рдЯреНрд╕ рдмрд┐рдЯреНрд╕ 2 рдФрд░ 3 рдХреЗ рдмрд┐рдЯ рд╡рд╛рдЗрдЬ рдирд┐рдЧреЗрдЯрд┐рд╡ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рдПрдирдПрдирдмреА рдмрд┐рдЯрд╡рд╛рдЗрдб рдиреЗрдЧреЗрдЯрд┐рд╡ рд╕реАрдбреАрдмреАрдЖрдИрдПрдордПрд╕, рдореИрдХреНрд╕) рдХреЛ рдХреЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╡реИрд▓реНрдпреВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЪрд┐рдк 252 рдмрд╛рдЗрдЯреНрд╕ рд╕реАрдбреАрдмреАрдЖрдИрдПрдордПрд╕ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╛рд╡рд┐рдд рдХрдорд╛рдВрдб рд╕рд╛рдЗрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред , рдореИрдХреНрд╕ (рдХрдорд╛рдВрдб рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯреНрд╕ рдЗрдВрдЯреЗрдЧрд░, рдорд╛рд╕реНрдЯрд░ рдЯреВ рд╕реНрд▓реЗрд╡, рдореИрдХреНрд╕рд┐рдордо) рдореВрд▓реНрдпред
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрди рддреАрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрдХреНрд░рд┐рдЯрдХ рд╕рд╛рдзрд╛рд░рдг APDU рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд┐рдирд┐рдордп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╕реЙрдлреНрдЯ рд░реАрд╕реЗрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдПрдЯреАрдЖрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛)ред
рдПрдкреАрдбреАрдпреВ рдХрдорд╛рдВрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди
APDU рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:- APDU (рдорд╛рд╕реНрдЯрд░ рдЯреВ рд╕реНрд▓реЗрд╡ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХрдорд╛рдВрдб) рдХреЛ рднреЗрдЬреЗрдВред
- рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рд╕рдордп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред
- рд╕реНрдерд┐рддрд┐ (рд╕реНрдерд┐рддрд┐ рдХрдорд╛рдВрдб) рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВ (рд╕реНрд▓реЗрд╡ рдЯреВ рдорд╛рд╕реНрдЯрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХрдорд╛рдВрдб)ред
рдпрд╣ рддрд░реНрдХ
Sci2c_apdu_send рдФрд░
Sci2c_apdu_recv рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИ: рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб I2C рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ, рдкреНрд░реЗрд╖рд┐рдд APDU рдЖрджреЗрд╢реЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рд╣реИрдВред рдЗрди рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдФрд░ рд╕реНрд▓реЗрд╡ рдбрд┐рд╡рд╛рдЗрд╕ рджреЛрдиреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рд░рд┐рд╕реЗрдкреНрд╢рди рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ APDU рдбреЗрдЯрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдпрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗред
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдиреАрдЪреЗ рдХреЗрд╡рд▓ рдПрдкреАрдбреАрдпреВ рдХрдорд╛рдВрдб рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рд╣реИрдВред
рдбреЗрдЯрд╛рд╢реАрдЯ рд╕реЗ рдЙрджрд╛рд╣рд░рдг:
C-APDU =>
00 A4 04 04 04 54 65 73 74 00 - "рдЯреЗрд╕реНрдЯ" рдирд╛рдо рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдкрдврд╝реЗрдВред
R-APDU <=
6A 86 - рдбреЗрдЯрд╛рд╢реАрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЙрддреНрддрд░
64 82 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (
рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рдорд┐рд▓рд╛ ), рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд░реНрдорд╡реЗрдпрд░ рдорд╛рдЗрдХреНрд░реЛрдХреНрд░рд┐рдХрд┐рдЯ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЙрддреНрддрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЕрд▓рдЧ рд╣реИред
рдХрд╛рд░реНрдб рдЙрддреНрдкрд╛рджрди рдЬреАрд╡рди рдЪрдХреНрд░ рдкрдврд╝рдирд╛
C-APDU =>
80 CA 9F 7F 00R-APDU <=
9F 7F 2A 47 90 51 67 47 91 12 10 38 00 53 56 00 40 39 73 50 48 48 53 53 00 00 00 00 00 13 13C 19 30 30 33 39 00 00 00 00 00 00 00 00 90 00рдкрдврд╝реЗрдВ рдХрд╛рд░реНрдб рдХреА рдЬрд╛рдирдХрд╛рд░реА
C-APDU =>
80 CA 00 66 00R-APDU <=
66 4C 73 4A 06 07 2A 86 48 86 FC 6B 01 60 0C 06A 2A 86 48 86 FC 6B 02 02 01 01 09 09 07 07A 86 48 86 FC 6B 03 64 0 0 06 06 09 2A 86 48 86 рдПрдлрд╕реА 6 рдмреА 04 02 55 65 65 0 рдмреА 06 09 2 рдмреА 85 10 86 48 64 02 01 03 66 0 рд╕реА 06 рдмреА 2 рдмреА 06 01 01 рдП 02 6 рдИ 01 02 90 00рдкрдврд╝реЗрдВ рдкреНрд░рдореБрдЦ рдЬрд╛рдирдХрд╛рд░реА
C-APDU =>
80 CA 00 E0 00R-APDU <=
E0 12 C0 04 01 FF 80 10 C0 04 02 FF 80 10 C0 04 03 FF 80 10 90 00рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
I2C рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ APDU рдЯреАрдореЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдЕрдиреБрднрд╡ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдХрдИ рдмрд╛рд░ рдпрд╣ рд╕реЛрдЪрддреЗ рд╣реБрдП рдкрд╛рдпрд╛ рдХрд┐ рдореБрдЭреЗ рд╕рд░реНрдХрд┐рдЯрд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдФрд░ рд╕рд╛рдзрд╛рд░рдг рд╕реЛрд▓реНрдбрд░рд┐рдВрдЧ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдордЬрд╝рд╛ рдЖрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА, рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдЬрдм рдореБрдЭреЗ 5 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдкрд╣рд▓реЗ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЛрд╣рд╛ рд▓реЗрдирд╛ рдкрдбрд╝рд╛ рдерд╛ред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд▓рд┐рдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рд╛рдордЧреНрд░реА рдЖрдкрдХреА рд░реБрдЪрд┐ рд╣реИред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдкрд░ рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб I2C рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╖рдп рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдореЗрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рд╕рдВрджрд░реНрдн: