pw_hal/i2c: Add rp2xxx I2C driver

Add an RP2xxx implementation of an I2C driver for use with the new
pw_hal SyncInitiator and AsyncInitiator. Includes tests for
SyncInitiator usage but not AsyncInitiator yet.

Change-Id: Ib57997265f569890968b9aa65c5e8f82e232daff
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/sandbox/+/414936
16 files changed
tree: 587b7fbf58c38164be35b11746d16c573f4c2d3b
  1. .agents/
  2. .allstar/
  3. .gemini/
  4. .github/
  5. .vscode/
  6. build_overrides/
  7. docker/
  8. docs/
  9. kudzu/
  10. pw_alignment/
  11. pw_allocator/
  12. pw_allocator_zephyr/
  13. pw_analog/
  14. pw_android_toolchain/
  15. pw_arduino_build/
  16. pw_assert/
  17. pw_assert_basic/
  18. pw_assert_fuchsia/
  19. pw_assert_log/
  20. pw_assert_tokenized/
  21. pw_assert_trap/
  22. pw_assert_zephyr/
  23. pw_async/
  24. pw_async2/
  25. pw_async_basic/
  26. pw_async_fuchsia/
  27. pw_atomic/
  28. pw_base64/
  29. pw_bloat/
  30. pw_blob_store/
  31. pw_bluetooth/
  32. pw_bluetooth_hci/
  33. pw_bluetooth_profiles/
  34. pw_bluetooth_proxy/
  35. pw_bluetooth_sapphire/
  36. pw_boot/
  37. pw_boot_cortex_m/
  38. pw_build/
  39. pw_build_android/
  40. pw_build_info/
  41. pw_build_mcuxpresso/
  42. pw_bytes/
  43. pw_change/
  44. pw_channel/
  45. pw_checksum/
  46. pw_chre/
  47. pw_chrono/
  48. pw_chrono_embos/
  49. pw_chrono_freertos/
  50. pw_chrono_rp2040/
  51. pw_chrono_stl/
  52. pw_chrono_threadx/
  53. pw_chrono_zephyr/
  54. pw_cli/
  55. pw_cli_analytics/
  56. pw_clock_tree/
  57. pw_clock_tree_mcuxpresso/
  58. pw_compilation_testing/
  59. pw_config_loader/
  60. pw_console/
  61. pw_containers/
  62. pw_cpu_exception/
  63. pw_cpu_exception_cortex_m/
  64. pw_cpu_exception_risc_v/
  65. pw_crypto/
  66. pw_digital_io/
  67. pw_digital_io_linux/
  68. pw_digital_io_mcuxpresso/
  69. pw_digital_io_rp2040/
  70. pw_digital_io_zephyr/
  71. pw_display/
  72. pw_dma_mcuxpresso/
  73. pw_docgen/
  74. pw_doctor/
  75. pw_elf/
  76. pw_emu/
  77. pw_enum/
  78. pw_env_setup/
  79. pw_env_setup_zephyr/
  80. pw_file/
  81. pw_flatbuffers/
  82. pw_format/
  83. pw_function/
  84. pw_fuzzer/
  85. pw_grpc/
  86. pw_hal/
  87. pw_hal_rp2xxx/
  88. pw_hdlc/
  89. pw_hex_dump/
  90. pw_i2c/
  91. pw_i2c_linux/
  92. pw_i2c_mcuxpresso/
  93. pw_i2c_rp2040/
  94. pw_i2c_zephyr/
  95. pw_ide/
  96. pw_interrupt/
  97. pw_interrupt_cortex_m/
  98. pw_interrupt_freertos/
  99. pw_interrupt_zephyr/
  100. pw_intrusive_ptr/
  101. pw_json/
  102. pw_kernel/
  103. pw_kvs/
  104. pw_libc/
  105. pw_libcxx/
  106. pw_log/
  107. pw_log_android/
  108. pw_log_basic/
  109. pw_log_fuchsia/
  110. pw_log_null/
  111. pw_log_rpc/
  112. pw_log_string/
  113. pw_log_tokenized/
  114. pw_log_zephyr/
  115. pw_malloc/
  116. pw_malloc_freelist/
  117. pw_malloc_freertos/
  118. pw_memory/
  119. pw_metric/
  120. pw_module/
  121. pw_multibuf/
  122. pw_multisink/
  123. pw_numeric/
  124. pw_package/
  125. pw_perf_test/
  126. pw_persistent_ram/
  127. pw_polyfill/
  128. pw_preprocessor/
  129. pw_presubmit/
  130. pw_protobuf/
  131. pw_protobuf_compiler/
  132. pw_random/
  133. pw_random_fuchsia/
  134. pw_result/
  135. pw_ring_buffer/
  136. pw_router/
  137. pw_rpc/
  138. pw_rpc_transport/
  139. pw_rust/
  140. pw_sensor/
  141. pw_snapshot/
  142. pw_software_update/
  143. pw_span/
  144. pw_spi/
  145. pw_spi_linux/
  146. pw_spi_mcuxpresso/
  147. pw_spi_rp2040/
  148. pw_spi_zephyr/
  149. pw_status/
  150. pw_stm32cube_build/
  151. pw_stream/
  152. pw_stream_uart_linux/
  153. pw_stream_uart_mcuxpresso/
  154. pw_string/
  155. pw_symbolizer/
  156. pw_sync/
  157. pw_sync_baremetal/
  158. pw_sync_embos/
  159. pw_sync_freertos/
  160. pw_sync_stl/
  161. pw_sync_threadx/
  162. pw_sync_zephyr/
  163. pw_sys_io/
  164. pw_sys_io_ambiq_sdk/
  165. pw_sys_io_arduino/
  166. pw_sys_io_baremetal_lm3s6965evb/
  167. pw_sys_io_baremetal_stm32f429/
  168. pw_sys_io_emcraft_sf2/
  169. pw_sys_io_mcuxpresso/
  170. pw_sys_io_rp2040/
  171. pw_sys_io_stdio/
  172. pw_sys_io_stm32cube/
  173. pw_sys_io_zephyr/
  174. pw_system/
  175. pw_target_runner/
  176. pw_thread/
  177. pw_thread_embos/
  178. pw_thread_freertos/
  179. pw_thread_stl/
  180. pw_thread_threadx/
  181. pw_thread_zephyr/
  182. pw_tls_client/
  183. pw_tls_client_boringssl/
  184. pw_tls_client_mbedtls/
  185. pw_tokenizer/
  186. pw_toolchain/
  187. pw_trace/
  188. pw_trace_tokenized/
  189. pw_transfer/
  190. pw_uart/
  191. pw_uart_mcuxpresso/
  192. pw_unit_test/
  193. pw_uuid/
  194. pw_varint/
  195. pw_watch/
  196. pw_web/
  197. pw_work_queue/
  198. seed/
  199. targets/
  200. third_party/
  201. zephyr/
  202. .bazelignore
  203. .bazelrc
  204. .bazelversion
  205. .black.toml
  206. .clang-format
  207. .clang-tidy
  208. .git-blame-ignore-revs
  209. .gitattributes
  210. .gitignore
  211. .gn
  212. .mypy.ini
  213. .prettierignore
  214. .prettierrc.cjs
  215. .pw_ide.yaml
  216. .pylintrc
  217. .ruff.toml
  218. activate.bat
  219. Android.bp
  220. AUTHORS
  221. bootstrap.bat
  222. bootstrap.fish
  223. bootstrap.sh
  224. BUILD.bazel
  225. BUILD.gn
  226. BUILDCONFIG.gn
  227. CMakeLists.txt
  228. GEMINI.md
  229. go.mod
  230. go.sum
  231. Kconfig.zephyr
  232. LICENSE
  233. MODULE.bazel
  234. MODULE.bazel.lock
  235. modules.gni
  236. OWNERS
  237. package.json
  238. pigweed.json
  239. PIGWEED_MODULES
  240. pw
  241. README.md
  242. REPO.bazel
  243. rustfmt.toml
  244. tsconfig.json
  245. workflows.json
  246. WORKSPACE_OWNERS
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links