|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; N& \ f4 e& [1 C9 h" y% Cvoid PSCInit(void). O/ A$ d1 S# N$ o% Y- g/ V
{
6 u) R, z* ~. B2 c' ?# k( F PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
% W( h* `+ y# S7 w}- ]3 h" R- e+ c
! u/ I5 d* W* m
void GPIOBankPinMuxSet(void)* z; U8 K5 n, A# d
{9 N ?! M9 O4 L# V1 o- u6 y
// DRDY ------------ GPIO6[14] -- 111( T$ B& G1 ^0 Y; G. s* o d
// SPI1_CLK ------------ GPIO2[13] -- 46: V9 ^0 N, i2 D0 |
// SPI1_SOMI------------ GPIO2[11] -- 44) }3 c, _/ F. D0 k! O" w% b, c
// SPI1_SIMO------------ GPIO2[10] -- 43
) {3 \ [9 ~9 l; S6 T // SPI1_CS2 ------------ GPIO1[0] -- 17
! S! ?7 l1 i, }% p // SPI1_CS3 ------------ GPIO1[1] -- 18
4 h: g: ~: `) L/ m) P/ E$ p2 J& }$ ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, D1 B4 b* Q' M, q5 S: V- V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
2 M" P/ j* t( I# a Z' @ t, d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
1 ~ F \' ]+ n8 b e% L: J, {" g8 l/ y2 R! E; W0 D& K
//DRDY
+ E- C9 j; {% t( M8 h GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY Q( ]8 m% V9 |5 A
// CS2,CS3
, ^/ s3 P$ t0 I( ^ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! o- H: O" z2 ~
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS38 i$ y. u0 j& w3 i& e) N
//SIMO
! @; Y- _+ C0 l5 `! l3 s1 z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: K- _' P e- v* @4 G, [& V& v //SOMI
* F1 }* ~, _5 n7 p: _& p; \; [+ z) f2 } GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
" _! t/ n: ^* v$ q' I //CLK H- C, D6 L' F2 `. d) Z
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ a/ F0 e* j& r1 ^0 f# \- t- Q# k2 t/ f, H( {3 z# d2 i- t) g
// LDAC1 b$ }# m$ e5 ~4 r/ F( l" Q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 f5 d4 J# Y) q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# }# o2 k% ^' y: W" t7 C4 [6 z3 R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ O0 e! O; d# `0 Y6 P# g8 B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. X8 l, P! S/ B
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
' M: c+ \1 x; y8 D2 a; b, e$ a) m}" {7 _( y# O! W9 d6 ^
) I z- {) \3 L8 T1 B! m8 Pint main(void)
/ L+ O* U& ~3 _( ^{/ v$ E1 z$ D; H9 o
// 外设使能# H' ?* R( y, ]$ M
PSCInit();
$ f8 k+ ?3 L M. \7 P" ?1 y3 `- v/ w+ A6 y
/ X- u6 F, f. {# F // 管脚复用配置) n V2 p! y8 O% J( x# |. v7 z+ b
GPIOBankPinMuxSet();. J8 B1 i3 M! h x& K& g# e) |3 ^
for(;;)
6 {$ }9 W+ I P4 {" j% N {
8 `, a! h. v: y' y0 c SET_SCLK();//时钟正常输出
9 V3 z: W0 m) P { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! S5 `) U( x* a" [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 m2 Z8 E0 A; @/ [6 x0 Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN3 {. B/ Y2 r# D
$ Q" L! I& m$ G" r% ?, } delay(20); Q" ^" _" G! q/ c$ m- d
CLR_SCLK();
; `2 g6 a% F3 q/ k2 y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 a% w- P2 o& J+ _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 {; }" Y1 e* I2 \ X7 b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
" V5 H8 K2 Z2 j. \( E delay(20);
! X3 m# L7 [1 | }" @; e5 I2 J9 }6 `3 s1 ?
}( q, u; h# T" H W
|
|