|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 e M) T) K! k$ y6 J
void PSCInit(void)
# p7 o' @, h7 a: m( o$ _/ d# {+ t{
: K! i7 ?1 N& Z PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 S6 S {6 v, E; H8 i X; k
}! y6 E7 N/ n5 P" l. W
- _! e6 u6 w) o! f7 Wvoid GPIOBankPinMuxSet(void)
7 d$ ^7 O5 n8 j{
5 z6 R" _' G! l" n( P // DRDY ------------ GPIO6[14] -- 1112 T2 Y* \/ t+ Y+ A& r* l
// SPI1_CLK ------------ GPIO2[13] -- 46* g* H6 l% ]' \# c4 ~# Q9 ^, M
// SPI1_SOMI------------ GPIO2[11] -- 44) \$ I) |" u* F: ~, ?3 ] f
// SPI1_SIMO------------ GPIO2[10] -- 43$ G" e( o+ K9 Z+ B4 e0 d; r
// SPI1_CS2 ------------ GPIO1[0] -- 17
8 A; Z, j8 h( s+ H! d- o // SPI1_CS3 ------------ GPIO1[1] -- 18 ]0 ~6 m% ~2 a& B" ], D [
. \! }2 X$ C" S w/ a$ V/ C8 V* v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
! J$ D* n$ X5 [- I# K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
: G9 U$ O6 Y6 q: C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);" J, h, ^5 y' A! L8 V
3 `0 H4 ]) w0 U3 r" B' x //DRDY7 M# F- \6 v1 a( m' l6 h& v
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY& \1 s* u. Q- d: U
// CS2,CS3
& o, B s( G( O9 u1 y. ?! x GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 W( z! P7 v3 f# M( B& w7 f, j% }
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
8 a7 v) }+ O8 u2 H/ ~7 }6 r% U //SIMO
! @" E- Z0 W0 W u2 i GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 |; V s* _" c0 } //SOMI
8 b9 v. I2 q8 K4 Z GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ R, e; T6 W( x! B( S //CLK8 y9 Z. @+ b1 B( ]
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK/ B* Y$ n; n) P% e3 o/ }5 R0 d
6 N2 y* D* |! J$ G6 P
// LDAC
7 ]3 ~( A" ^+ d GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 n( ]/ N6 c" J4 B; a/ |+ T z( G- r! }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 y4 k) @) Z% o7 y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( f3 p" O! }: Z$ W9 y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; D( d1 x* P* N; W- u: L
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
( }) T9 u3 ]/ _4 i6 ?) q3 q: J}
# @. U- ]7 A3 w$ S0 [* n# h
: r: X5 S) r, n. G: }int main(void)8 H" k* W* b( \0 b4 S( c- \# X
{
- L* K4 x) }/ K8 c+ r) ? // 外设使能
) u [2 ^* w, S1 m( w" P PSCInit();
) o2 a" B" y F$ V! Y3 y; s! s- T, ]) h) ]: ?
& P2 ?* y6 V. z% Z* \7 E // 管脚复用配置+ c" u( M g3 K! o
GPIOBankPinMuxSet();
( q2 `0 q8 t W9 x4 P, } for(;;)- B7 S) j7 {; F" k2 ^: y1 d
{( Q9 U9 p d$ Y+ f l
SET_SCLK();//时钟正常输出5 J5 e/ k1 Z7 h) g7 A
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 z4 I# S/ N" a1 F( j; q( q, A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS36 v7 |* C- t8 y: W+ O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
$ D+ X* Y1 T* {* T4 ^8 ^% G
0 o" V% Q7 S1 Z' x delay(20);$ |1 v' n7 h* ^5 q) @/ P" z8 r2 C
CLR_SCLK();) c' m, [+ r0 H5 z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 M! S2 D* \* Y, [" _" G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 [7 d* `5 v( m GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ L" v4 l8 R1 U4 P, c delay(20);
$ F, [: j0 r- A$ Z$ ~ }; J' |( _6 d: Y: J" }/ x
}
8 L* N5 Y7 [. |: W! P# f0 f |
|