|
|
使用下面的例子代码,不能使SIMO和CS为低电平:. l# z4 W' q9 v* @
void PSCInit(void)/ c; w2 G. |( u# Z
{
# Z1 u8 f# b& C3 h3 r) J PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
' N [. E' s- T- t% M}' r+ C/ c8 Y& I- z: P8 g" `8 x
8 s5 J0 \) e4 M( x, n) ~. J- L \0 ?
void GPIOBankPinMuxSet(void)5 g/ P6 e' T0 b1 p1 j2 V
{6 L+ K- d4 y |, P* i" G
// DRDY ------------ GPIO6[14] -- 111, {3 a: @- B6 I) O ^" e
// SPI1_CLK ------------ GPIO2[13] -- 465 \ f( u8 o+ \' _ s) v. Y
// SPI1_SOMI------------ GPIO2[11] -- 44
7 z, z4 k" k& _ // SPI1_SIMO------------ GPIO2[10] -- 43) g2 _# R; \ g! G+ E
// SPI1_CS2 ------------ GPIO1[0] -- 17* ]+ b' L' @& ]& t% W, ~- \
// SPI1_CS3 ------------ GPIO1[1] -- 185 x# E7 F- d# s/ i
: |1 j4 e6 S# Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
( x0 E( @: H5 x6 J }* m4 v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
" U0 C/ q! t6 J3 @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);" w0 x8 U& d. X7 l: z3 r/ V/ t! r
( }* c& J# ?8 T# X
//DRDY
7 y' I0 p" S3 N1 G( \: R: o GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" c) y* t: c5 Y% M // CS2,CS3
, i0 {3 b3 v. h' E" t3 o GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 u3 m! j$ v3 M, ~4 n6 d/ U5 z" }
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 E% M$ Z9 q# x: d //SIMO
, |3 @0 {( C# R% Z1 y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" x2 } \7 K, p6 h
//SOMI
# E& ]2 d' F6 \9 G1 S GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
0 W+ C4 F$ Q/ H! `+ u //CLK2 L$ X/ n# d& u! @6 E/ [
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
& g( X9 C$ p! r8 v. {, h- D8 W$ A0 w( d# |5 @' w' D4 F
// LDAC
5 |* E; M' ]7 D% A/ R GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK# E" q. H9 a/ l |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 ^* [/ G# c/ f3 I) F" r1 V
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 x" t5 J' W9 W v
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS33 V' R& m. n9 k/ Q; B
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
& H5 @# x( g: L. Q( A}; T6 A' k% E( z/ I$ J- [
$ o0 C+ {' y, Y% \int main(void)
( t2 l3 R* a. d$ Y{) A7 Z; f: w% t# N
// 外设使能6 _3 I4 j+ S* ]
PSCInit();3 A' ^+ I" R; y! \& o
" X* I$ L- p3 Y+ F
6 v! J0 G% o- ?
// 管脚复用配置& R- s% R" d5 A% N
GPIOBankPinMuxSet();: v# i v ` j0 S8 x
for(;;)! _, c( G$ E2 `( |& f! [
{4 j O! r; w. T9 U
SET_SCLK();//时钟正常输出
2 y5 U/ ^: e$ G- e& k GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& m' m1 T# T4 V2 @: Q3 q O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3( e( E7 O+ |/ I0 k. u. y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
; H! |! p6 ?& [; X2 c! C3 B
. M) ^) \& j2 Y8 C" u; j delay(20);# o/ z9 q9 i! A: }
CLR_SCLK();
. `2 | c8 ]' w |; n3 Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
! C* S! P0 ~0 r) L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3) \' ~6 Y# a/ v# @" n M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 `1 ~& W0 U& ]8 Q delay(20);
/ X6 [# t, O2 y' ^5 F2 Y0 ?9 h }7 F2 L" K4 i4 o8 i! }
}# R6 D9 Y: j9 x
|
|