рдПрдореНрдмреЗрдбреЗрдб рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рджрд╛рд╕ SPI рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП SPI рдмрд╕ рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЕрд╡рд▓реЛрдХрди (рднрд╛рдЧ рдПрдХ, рдЕрд╡рд▓реЛрдХрди)

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрд╕рдкреАрдЖрдИ рдмрд╕ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдореНрдмреЗрдбреЗрдб рддрдХрдиреАрдХ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкреНрд░рдпреБрдХреНрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕рдкреАрдЖрдИ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕рд╣реА рджрд┐рд╢рд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд▓реЗрдЦ рдПрдХ рд╡рд┐рд╖рдп рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ред

0. рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп


рдпрд╣ рд▓реЗрдЦ рдХреНрдпрд╛ рд╣реИ?
рдпрд╣ рд▓реЗрдЦ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╕рдВрдХрд▓рди рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рдПрдХ рдирд┐: рд╢реБрд▓реНрдХ рдЕрдиреБрд╡рд╛рдж, рд╕рд╛рде рд╣реА рд╕рд╛рде рдореЗрд░реА рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рдкрд░рд┐рд╡рд░реНрдзрди рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрдиред

рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдореИрдВ рд╣реВрдВред рдПрдореНрдмреЗрдбреЗрдб рд▓рд┐рдирдХреНрд╕ рдордВрдЪреЛрдВ рдкрд░ рдЖрдк рдЕрдХреНрд╕рд░ рд╕рд╡рд╛рд▓ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: "рдЗрд╕ рдмреЛрд░реНрдб рдкрд░ рдПрд╕рдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ?"ред рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдореИрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг SPI рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд┐рдд рдХреЛрдб рджреВрдВрдЧрд╛ред

рд▓реЗрдЦ рд╕рдВрд░рдЪрдирд╛
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдмрд╣реБрдд рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдереА, рд▓реЗрдЦ рдХреЛ рдХрдИ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  1. SPI рдХреНрдпрд╛ рд╣реИ?
  2. рд▓рд┐рдирдХреНрд╕ рдПрд╕рдкреАрдЖрдИ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдЕрд╡рд▓реЛрдХрди
  3. Spidev рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпреВрдЬрд░рд╕реНрдкреЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ SPI рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рдирд╛
  4. рдПрдХ рдХрд░реНрдиреЗрд▓-рд╕реНрддрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ SPI рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕
  5. рдкреНрд░рд▓реЗрдЦрди

рдкрд╣рд▓реЗ рджреЛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рджреВрд╕рд░реЗ рдореЗрдВ рд╢реЗрд╖ред

рдкрд╣рд▓реА рдЙрдкрдзрд╛рд░рд╛ рдПрд╕рдкреАрдЖрдИ рдмрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ, рд▓реЗрдЦ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдирдХреНрд╕ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рджреВрд╕рд░реА рдЙрдкрдзрд╛рд░рд╛ рдЙрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рддрдВрддреНрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдПрд╕рдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ; рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрдврд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рддреАрд╕рд░реЗ рдФрд░ рдЪреМрдереЗ рднрд╛рдЧ рдореЗрдВ рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдпрджрд┐ рдЖрдкрдХреЛ рдореЗрд░реЗ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рддреБрд░рдВрдд рдкрд╛рдВрдЪрд╡реЗрдВ рднрд╛рдЧ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рдВрд░рдЪрдирд╛ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд╛рдо рд╕реЗ рд▓рд┐рдВрдХ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдПрдХ рдирдП рдЯреИрдм рдореЗрдВ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ / рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рддреНрд░реБрдЯрд┐рдпреЛрдВ
рдореИрдВ рдЬрд╛рджреВрдЧрд░ рдирд╣реАрдВ рд╣реВрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдпрд╛ рдЕрд╢реБрджреНрдзрд┐ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

1. рдПрд╕рдкреАрдЖрдИ рдХреНрдпрд╛ рд╣реИ?


рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо SPI рдХрд╛ рдЕрд░реНрде рд╣реИ "рд╕реАрд░рд┐рдпрд▓ рдкреЗрд░рд┐рдлреЗрд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕" рдпрд╛ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ "рд╕реАрд░рд┐рдпрд▓ рдкреЗрд░реАрдлреЗрд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕"ред рдирд╛рдо рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИ, рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдбреАрдПрд╕реА / рдПрдбреАрд╕реА, рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░, рд╕реЗрдВрд╕рд░, рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд░реНрдЯ рдПрдХреНрд╕рдкреИрдВрдбрд░реНрд╕ (рдЬреАрдкреАрдЖрдИрдУ), рд╡рд┐рднрд┐рдиреНрди рдореЗрдореЛрд░реА рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдЬреИрд╕реЗ рдХрд┐ рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХреНрд╕ рдФрд░ рдИрдерд░рдиреЗрдЯ рдирд┐рдпрдВрддреНрд░рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

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

рдПрдХ SPI рдирд┐рдпрдВрддреНрд░рдХ рдЖрдорддреМрд░ рдкрд░ MCU рдпрд╛ eMPU рдореЗрдВ рдПрдХ рдкрд░рд┐рдзреАрдп рдЗрдХрд╛рдИ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪрд┐рдкреНрд╕ рдореЗрдВ, рдпрд╣ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдФрд░ рд╕реНрд▓реЗрд╡ рдореЛрдб рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд▓рд╣рд╛рд▓, рд▓рд┐рдирдХреНрд╕ рдХреЗрд╡рд▓ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдПрд╕рдкреАрдЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред
рдЫрд╡рд┐


рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЖрдк рдКрдкрд░ рдХреА рддрд╕реНрд╡реАрд░ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ (рдореБрдХреНрдд GFDL рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рднреА рджрд╛рд╕ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рджрд╛рд╕ рдЪрдпрди рд╕рд┐рдЧреНрдирд▓ (~ рд╕реАрдПрд╕) рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рдеред рдкреНрд░рддреНрдпреЗрдХ рджрд╛рд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рджрд╛рд╕ рдЪрдпрди рд╕рдВрдХреЗрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЪрд┐рддреНрд░ рдореЗрдВ рд╡реЗ SSx рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ)ред рджрд╛рд╕ рдЪрдпрди рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП, рджреЛрдиреЛрдВ SPI рдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ (GPIO) рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рджреЛ рдХрдВрдбрдХреНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдШрдбрд╝реА рджрд╛рд▓реЛрдВ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдЧреБрд▓рд╛рдореЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреБрд▓рд╛рдо рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд рд╣реИред
рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг:


рд╕реНрд╡рддрдВрддреНрд░ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рдПрдХ рдПрдХрд▓ рджрд╛рд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк ~ CS рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЬрдореАрди рдкрд░ рдЦреАрдВрдЪрдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд░рд┐рдп рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд░рд╣реЗред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджрд╛рд╕ рд╕реАрдПрд╕ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдпрд╛ рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рджрд╛рд╕реЛрдВ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдВрдмрдВрдз рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдЕрд╕реБрд╡рд┐рдзрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рджрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕рдВрдХреЗрдд ~ рд╕реАрдПрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡рд┐рджреЗрд╢реА рд╕рд╛рд╣рд┐рддреНрдп рдореЗрдВ рдХреИрд╕реНрдХреЗрдб рдХрдиреЗрдХреНрд╢рди рдпреЛрдЬрдирд╛, рдЬрд┐рд╕реЗ "рдбреЗрдЬрд╝реА-рдЪреЗрди" ("рдорд╛рд▓рд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдЗрд╕ рддрд░рд╣ рдХреА рдХрдореА рд╕реЗ рд░рд╣рд┐рдд рд╣реИред
рдЫрд╡рд┐


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

рдПрд╕рдкреАрдЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рд╣реИрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рднреНрд░рдо рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдпреЗ рдЪрд╛рд░ рдореЛрдб рджреЛ рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИрдВ:

рдпреЗ рджреЛ рдмрд┐рдЯреНрд╕ рдореЛрдб рдирдВрдмрд░ рдмрдирд╛рддреЗ рд╣реИрдВред CPOL рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рд╣реИ рдФрд░ CPHA рд╕рдмрд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХрднреА-рдХрднреА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореЛрдб рдирдВрдмрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдордп рд░реЗрдЦрд╛ рдЪрд┐рддреНрд░ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдирдореВрдирд╛рдХрд░рдг рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рд╣рдореЗрд╢рд╛ рдШрдбрд╝реА рд╕рдВрдХреЗрдд рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдореЛрдб 0 (рд╕рдмрд╕реЗ рдЖрдо рд╡рд┐рдХрд▓реНрдк) рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рджрд╛рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдШрдбрд╝реА рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдмрдврд╝рддреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд╕рд╛рде MOSI рдЗрдирдкреБрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдмрд┐рдЯ рдХреЛ рдкрдврд╝реЗрдЧрд╛, рдФрд░ рдорд╛рд╕реНрдЯрд░ MISO рдЗрдирдкреБрдЯ рдкрд░ рджрд╛рд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рднреА рдкрдврд╝реЗрдЧрд╛ ред рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рднреА рдЪрд╛рд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдХреЗ рд▓рд┐рдП рдСрд╕рд┐рд▓рдЧреЛрдЧреНрд░рд╛рдо рджреВрдВрдЧрд╛:
рдЫрд╡рд┐
рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ MOSI (рдиреАрд▓реА рд░реЗрдЦрд╛) рдФрд░ SCK (рдкреАрд▓реА рд▓рд╛рдЗрди) рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, 0x64 рдирдВрдмрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд▓рд╛рдЗрдЯ рд╡рд░реНрдЯрд┐рдХрд▓ рд▓рд╛рдЗрдиреЗрдВ рдбреЗрдЯрд╛ рд╕реИрдВрдкрд▓рд┐рдВрдЧ рдХрд╛ рдкрд▓ рджрд┐рдЦрд╛рддреА рд╣реИрдВред рдореЛрдб 2 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, CPOL = 1 рдФрд░ CPHA = 0ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд┐рдВрдЧ рд╕рд┐рдЧреНрдирд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдирдореВрдирд╛ рдмрдврд╝рддреЗ рдХрд┐рдирд╛рд░реЗ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧрд┐рд░рддреЗ рд╣реБрдП) рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдЪреИрдирд▓ рд╣реИрдВ, ~ CS рдФрд░ MISO рд╕рд┐рдЧреНрдирд▓ рдирд╣реАрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗ рдЗрддрдиреЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ~ рд╕реАрдПрд╕ рд╕рд┐рдЧреНрдирд▓ рдкреВрд░реЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рджреМрд░рд╛рди рдмрд╕ рдПрдХ "рд╡рд┐рдлрд▓рддрд╛" рд╣реИред

2. рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдПрд╕рдкреАрдЖрдИ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЕрд╡рд▓реЛрдХрди


рд▓рд┐рдирдХреНрд╕ SPI рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓рд╛ SPI рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХрд╛ рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдРрд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд╕рд╕реНрдкреЗрдВрдб рдореЛрдб (рд╕рд╕реНрдкреЗрдВрдб) рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рдмрд╛рд╣рд░ (рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ), рд╕рдВрджреЗрд╢ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХрддрд╛рд░ рд╕реЗ рдЕрдЧрд▓рд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди (spi_transfer) рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ (рдиреАрдЪреЗ рдХреЗрд╡рд▓ рдХрддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ) рдФрд░ рдЗрд╕реЗ рд╕реАрдзреЗ рднреЗрдЬрдирд╛ред рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП, рдпрд╣ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ CS (cs_activate / cs_deactive рдлрд╝рдВрдХреНрд╢рдВрд╕) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп / рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реЗ рдЙрди MCU / eMPU рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИрдВ, рдЬрд┐рди рдкрд░ рд▓рд┐рдирдХреНрд╕ рдкреЛрд░реНрдЯ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЗрди рдкрд░ рдЪрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рдЬреИрд╕реЗ рдХрд┐ рдЪрд┐рдк рд╕реЗрд▓реЗрдХреНрдЯ рдбрд┐рдХреЛрдбрд┐рдВрдЧ, рдмрд╛рд╣рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рджрд╛рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ред рддрд░реНрдХред рдпрд╣ рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GPIO рдХреА рдХрдореА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред

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

рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЙрдкрдХрд░рдг SPI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рдПрдХ рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ рд╣реИ, рддреЛ рдбреНрд░рд╛рдЗрд╡рд░ ALSA рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдбрдкреНрд▓реЗ) рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдкреНрд░рддреАрдХ рдбрд┐рд╡рд╛рдЗрд╕ / рджреЗрд╡ / рдСрдбрд┐рдпреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдпрд╣ рдХреИрд╕реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ред рдФрд░ рдХреМрди рд╕реА рдмрд╕ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИред

рдХрд░реНрдиреЗрд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдкрд┐рдбрд╡ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЪрд░рд┐рддреНрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рдеред рдпрд╣ рдЖрдкрдХреЛ рдорд╛рдирдХ рд░реАрдб () рдФрд░ рд░рд╛рдЗрдЯ () рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ ioctl () рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реНрдг-рджреНрд╡реИрдз рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд▓реЗрд╡ рдПрд╕рдкреАрдЖрдИ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдЖрдзреЗ-рдбреБрдкреНрд▓реЗрдХреНрд╕ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, SPI рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рд▓рд┐рдирдХреНрд╕ SPI рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред SPI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрджреЗрд╢ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ spi_message рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдмрд╣реБ-рдЦрдВрдб SPP рд▓реЗрдирджреЗрди рд╣реИред
struct spi_message { struct list_head transfers; struct spi_device *spi; unsigned is_dma_mapped:1; void (*complete)(void *context); void *context; unsigned actual_length; int status; struct list_head queue; void *state; }; 

рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг - рдПрдХ рд▓реЗрди-рджреЗрди (рдЯреНрд░рд╛рдВрд╕рдлрд░) рдореЗрдВ рд╕рдВрдЪрд░рд┐рдд рдЦрдВрдбреЛрдВ рдХреА рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА;
spi - spi рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдВрджреЗрд╢ рд╕реНрдерд┐рдд рд╣реИ;
is_dma_maped - рдпрджрд┐ рдпрд╣ рдзреНрд╡рдЬ рд╕рддреНрдп рд╣реИ, рддреЛ dma рдФрд░ cpu рджреЛрдиреЛрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдмрдлрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ;
рдкреВрд░рд╛ - рдХреЙрд▓рдмреИрдХ рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛;
рд╕рдВрджрд░реНрдн - рдкреВрд░реНрдг рд╡рд╛рдкрд╕ рдмреБрд▓рд╛рдиреЗ рдХрд╛ рддрд░реНрдХ ();
real_length - рд╕рднреА рд╕рдлрд▓ рд╕реНрдерд╛рдирд╛рдВрддрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдмрд╛рдЗрдЯреНрд╕ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛;
рд╕реНрдерд┐рддрд┐ - 0 рдпрджрд┐ рд╕рдлрд▓ рд╣реЛ, рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд░рдиреЛ рдХреЗ рд╕рд╛рде рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп;

Spi_message рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рдкрд░рдорд╛рдгреБ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ spi_transfer рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрдЪрд░рдг рдЕрдиреБрдХреНрд░рдо "рдкрд░рдорд╛рдгреБ" рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рд╣реИ рдХрд┐ рдПрд╕рдкреАрдЖрдИ рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп spi_message рд╕рдВрджреЗрд╢ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реЛред рдХреБрдЫ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░, рдРрд╕реЗ рдХрдИ рдХреНрд░рдореЛрдВ рдХреЛ рдПрдХрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдП рдЧрдП рдбреАрдПрдордП рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░, рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХрддрд╛рд░рдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рдж рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдПрдХрд▓ рджрд╛рд╕ рдХреЗ рд╕рднреА рдХреЙрд▓ рд╣рдореЗрд╢рд╛ FIFO рдХреНрд░рдо рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рд╕рдВрд░рдЪрдирд╛ spi_transfer рд╕рдВрд░рдЪрдирд╛ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕рдВрджреЗрд╢ рд╕реВрдЪреА рдореЗрдВ рдПрдХрд▓ рдкреНрд░рд╕рд╛рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдФрд░ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдмрдлрд╝рд░реНрд╕ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред
 struct spi_transfer { const void *tx_buf; void *rx_buf; unsigned len; dma_addr_t tx_dma; dma_addr_t rx_dma; unsigned cs_change:1; u8 bits_per_word; u16 delay_usecs; u32 speed_hz; struct list_head transfer_list; }; 

tx_buf - рдХрд░реНрдиреЗрд▓ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдмрдлрд╝рд░ рдХреЛ рдкреЙрдЗрдВрдЯрд░, рдпрд╛ NULL;
rx_buf - рдХрд░реНрдиреЗрд▓ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдмрдлрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ NULL;
рдмрд╛рдЗрдЯ рдореЗрдВ рдЖрд░рдПрдХреНрд╕ рдФрд░ рдЯреАрдПрдХреНрд╕ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдЖрдХрд╛рд░ рд▓реЗрди рд╣реИ;
tx_dma - DMA рдкрддрд╛ tx_buf, рдЕрдЧрд░ spi_message.is_dma_mapped рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
rx_dma - DMA рдкрддрд╛ rx_buf, рдЕрдЧрд░ spi_message.is_dma_mapped рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
speed_hz - рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреА рдЧрддрд┐ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдорд╛рди 0 рд╣реИ, рддреЛ spi_device рд╕рдВрд░рдЪрдирд╛ рдХреЗ max_speed_hz рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдмрд┐рдЯреНрд╕_рдкрд░_рд╢рдмреНрдж - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рддрд┐ рд╕реЗ рднрд┐рдиреНрди рдкреНрд░рддрд┐ рд╢рдмреНрдж рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдорд╛рди 0 рд╣реИ, рддреЛ spi_device рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд┐рдЯреНрд╕_рдкрд░_рд╢рдмреНрдж рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рджреЗрд░реА_рд╕реБрдЪреЗрд╕ - рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдЯ рдХреЗ рдмрд╛рдж рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рдордзреНрдпрд╛рдВрддрд░ рдФрд░ рдЪрд┐рдкрд╕реЗрд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╛ рдХрддрд╛рд░ рдореЗрдВ рдЕрдЧрд▓реЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдмреЗрд╣рдж рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдЪрд╛рд▓рдХ рдХреЗ рдХрд┐рд╕ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рджреЗрд░реА рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, at91 рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЪрд┐рдкреНрд╕ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИред

Spi_transfer рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЖрд░рдВрдн рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдХрд┐рдореА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреАрдПрдордП рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрдЬрд╝рд▓реЛрдХ рдФрд░ рдЕрдиреНрдпред рдпрджрд┐ рдорд╛рд╕реНрдЯрд░ рдбреНрд░рд╛рдЗрд╡рд░ dma рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реИрдзрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд╕рдордп рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдПрд╕рдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рддреЗ рд╕рдордп, рджрд░реНрдЬ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣рдореЗрд╢рд╛ рдкрдврд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ tx_buf рдФрд░ / рдпрд╛ rx_buf рдмрдлрд╝рд░реНрд╕ рдХреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡реЗ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдбреАрдПрдордП рдкрддреЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рджрд░ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рд╢рдмреНрдж рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, at91 рд╕реАрд░реАрдЬрд╝ рдЪрд┐рдкреНрд╕ рдореЗрдВ SPI рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП, рдлрд╝реАрд▓реНрдб speed_hz рдФрд░ bit_per_word рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ 0 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред

рдпрджрд┐ tx_buf рдХреЛ рдкреЙрдЗрдВрдЯрд░ NULL рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ rx_buf рдмрдлрд╝рд░ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ SPI рдХрдВрдЯреНрд░реЛрд▓рд░ рд╢реВрдиреНрдп рдХреЛ рдкреЙрдк рдЖрдЙрдЯ рдХрд░реЗрдЧрд╛ред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм rx_buf рдХреЛ NULL рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрдврд╝рд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдФрд░ рдХреИрдкреНрдЪрд░ рдХреА рдЧрдИ) рд╣рдореЗрд╢рд╛ рд▓реЗрди рд╣реЛрддреА рд╣реИред рд╢рдмреНрдж рдХреЗ рдХреЗрд╡рд▓ рднрд╛рдЧ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рддреАрди рдмрд╛рдЗрдЯреНрд╕ рдФрд░ 16 рдмрд┐рдЯреНрд╕ рдпрд╛ 20 рдмрд┐рдЯреНрд╕ рдХреА рдПрдХ рд╢рдмреНрдж рд▓рдВрдмрд╛рдИ рдХреЛ рдкреБрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддрд┐ рд╢рдмреНрдж 2 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рджреВрд╕рд░реЗ рдореЗрдВ - 4 рдмрд╛рдЗрдЯреНрд╕)ред

рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рджрд┐рдП рдЧрдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ / рдкрдврд╝рддреЗ рд╕рдордп, рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ SPI- рд╡рд┐рд╢рд┐рд╖реНрдЯ (рдЖрдорддреМрд░ рдкрд░ рдмрдбрд╝реЗ-рдПрдВрдбрд┐рдпрди, рдЬрдм рддрдХ SPI_LSB_FIRST рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ) рд╕реЗ рдЗрд╕ CPU рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдмрд┐рдЯреНрд╕_рдкрд░_рдУрд░реНрдб рдкреИрд░рд╛рдореАрдЯрд░ 16 рд╣реИ, рддреЛ рдмрдлрд╝рд░реНрд╕ 2N рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕рдореЗрдВ 16 рдмрд┐рдЯреНрд╕ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрди рд╢рдмреНрдж рд╣реЛрдВрдЧреЗ, рдЬреЛ рдЗрд╕ рд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд╛рдЗрдЯ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред

рдпрджрд┐ рд╢рдмреНрдж рдХрд╛ рдЖрдХрд╛рд░ рджреЛ рдХреА рд╢рдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╢рдмреНрдж рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рдЯреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╢рдмреНрдж рд╣рдореЗрд╢рд╛ рд╕рд╣реА-рдЙрдЪрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рдЯ рд╣рдореЗрд╢рд╛ рдЙрдЪреНрдЪ рдмрд┐рдЯ рд╣реЛрдВрдЧреЗред
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓реЛрдЧреНрд░рд╛рдо рджреВрдВрдЧрд╛:
рдЫрд╡рд┐
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, tx рдмрдлрд╝рд░ рдореЗрдВ рдорд╛рди 0xf98e рд╣реЛрддрд╛ рд╣реИ, рд╕реЗрдЯ рдорд╛рди bit_per_word рдкреНрд░рддрд┐ рд╢рдмреНрдж 12 рдмрд┐рдЯреНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЙрдкрдХрд░рдг SPI_MODE_0 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рдиреАрд▓реА рд░реЗрдЦрд╛ рдПрдордУрдПрд╕рдЖрдИ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ рдкреАрд▓реА рдПрд╕рд╕реАрдХреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдпрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рднреЗрдЬрдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ 0x098e рдЖрдпрд╛ рдерд╛, рдЙрдЪреНрдЪ рдЪрд╛рд░ рдмрд┐рдЯреНрд╕ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рддреЛ рдПрдХ 12-рдмрд┐рдЯ рд╢рдмреНрдж рдореЗрдореЛрд░реА рдореЗрдВ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рд╢рдмреНрдж рдЖрдХрд╛рд░ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдХрд╛рд░ 2 * 8 - 12 = 4 рдмрд┐рдЯреНрд╕ рд╣реИ, рдЬреЛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рджреМрд░рд╛рди рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рднреА рдПрд╕рдкреАрдЖрдИ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЗрд╕реА рдЪрд┐рдкрд╕реЗрд▓реЗрдХреНрдЯ рдХреЗ рд╕рдХреНрд░рд┐рдпрдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рд╕рдВрджреЗрд╢ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕рдВрдЪрд░рдг рддрдХ рджрд╛рд╕ рд╕рдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИред рдбреНрд░рд╛рдЗрд╡рд░ spi_transfer рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ cs_change рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдПрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрди рд╕реНрддрд░реЛрдВ рдХреА рд╕реНрдореГрддрд┐ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП spi_message (рдФрд░ рдЗрд╕рдХреЗ spi_transfer) рдХреЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рддрдХ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╕рдВрджреЗрд╢ (рдФрд░ рдЗрд╕рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╕рд╛рд░рдг) рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдмрд╛рдж рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

SPI рдХрд┐рд╕реА рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдХрд░рдг рдЦреЛрдЬ рддрдВрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрд╕рдкреАрдЖрдИ рдЙрдкрдХрд░рдг рдЧрд░реНрдо рдкреНрд▓рдЧрд┐рдВрдЧ / рдЕрдирдкреНрд▓рдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рд╕реАрдзреЗ рдмреЛрд░реНрдб рдХреЛ рдорд┐рд▓рд╛рдк рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдмреЛрд░реНрдб-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдмреЛрд░реНрдб рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрд╢рд╛рдП рдЧрдП рд╣реИрдВ: рдореЗрд╣рд░рд╛рдм /... / рдордЪ - * / рдмреЛрд░реНрдб - *ред рд╕реАред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ SK-AT91SAM9260 рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП tlv320aic23b рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреИрд╕реЗ рджрд┐рдЦрддреА рд╣реИрдВ:
 static struct spi_board_info ek_spi_devices[] = { { /* tlv320aic23b CODEC */ .modalias = "tlv320aic23b", .chip_select = 0, .max_speed_hz = 10 * 1000 * 1000, .bus_num = 1, .mode = SPI_MODE_1, .platform_data = &tlv320aic23b_data, }, тАж } 

рдЬрд╣рд╛рдВ рдореЛрдбрд▓рд┐рдпрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХрд░реНрдиреЗрд▓ рдЪрд╛рд▓рдХ рдХрд╛ рдирд╛рдо рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, "tlv320aic233");
Chip_select - рд╕рдВрдмрдВрдзрд┐рдд рдЪрд┐рдк рдЪрдпрди рдХреА рд╕рдВрдЦреНрдпрд╛;
max_speed_hz - рд╣рд░реНрдЯреНрдЬ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдЖрд╡реГрддреНрддрд┐;
рдореЛрдб - рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ SPI_MODE_0 рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд SPI рдореЛрдб ... SPI_MODE_3, рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА "рдСрдкрд░реЗрд╢рди" рдЭрдВрдбреЗ SPI_CS_HIGH рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЪрд┐рдкрд╕реЗрд▓реЗ рдкрд░ рд╕рдХреНрд░рд┐рдп рдЙрдЪреНрдЪ рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ), SPI_NO_CS (рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ CS рд╕рдХреНрд░рд┐рдпрдг рдХреЗ рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг)ред Spi_device рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдЭрдВрдбреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ;
Bus_num - рдмрд╕ рдирдВрдмрд░ (рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, MCU / eMPU рдкрд░ рдбреЗрдЯрд╛рд╢реАрдЯ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдХреА SPI рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ)ред
Spi_board_info рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЖрд░рдВрднрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ:
const void * platform_data - рдпрд╣ рдлрд╝реАрд▓реНрдб рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдкреЙрдЗрдВрдЯрд░ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ;
рд╢реВрдиреНрдп * рдХрдВрдЯреНрд░реЛрд▓рд░_рдбреЗрдЯрд╛ - рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреАрдПрдордП, рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ;
int irq - рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

Spi_board_info рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рднреА рдлрд╝реАрд▓реНрдб spi_device рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдВрдЧрдд рдлрд╝реАрд▓реНрдб рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЕрдиреНрдп рдПрд╕рдкреАрдЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рддрддреНрд╡ рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдпреЗ рд╕рдВрд░рдЪрдирд╛рдПрдБ рдЙрди рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдЬрд╛рдВрдЪ () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐ рд╢рдмреНрдж рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛) рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рджрд╛рд╕ рдПрд╕рдкреАрдЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЧрд░реНрдо-рдкреНрд▓рдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрднреА рднреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, SPI рдмрд╕ рдирдВрдмрд░ рджреНрд╡рд╛рд░рд╛ spi_master рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП spi_busnum_to_master () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдмрд╕ рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд╖рдп рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред

рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкрдврд╝реЗрдВ

Source: https://habr.com/ru/post/In123145/


All Articles